/*

 * Swiper 2.2 - Mobile Touch Slider

 * http://www.idangero.us/sliders/swiper/

 *

 * Copyright 2012-2013, Vladimir Kharlampidi

 * The iDangero.us

 * http://www.idangero.us/

 *

 * Licensed under GPL & MIT

 *

 * Updated on: September 15, 2013

*/



if(!jQuery().swiper) {



var Swiper = function (selector, params) {

    /*=========================

      A little bit dirty but required part for IE8 and old FF support

      ===========================*/

    if (document.body.__defineGetter__) {

        if (HTMLElement) {

            var element = HTMLElement.prototype;

            if (element.__defineGetter__) {

                element.__defineGetter__("outerHTML", function () { return new XMLSerializer().serializeToString(this); } );

            }

        }

    }



    if (!window.getComputedStyle) {

        window.getComputedStyle = function (el, pseudo) {

            this.el = el;

            this.getPropertyValue = function (prop) {

                var re = /(\-([a-z]){1})/g;

                if (prop === 'float') prop = 'styleFloat';

                if (re.test(prop)) {

                    prop = prop.replace(re, function () {

                        return arguments[2].toUpperCase();

                    });

                }

                return el.currentStyle[prop] ? el.currentStyle[prop] : null;

            }

            return this;

        }

    }

    if (!Array.prototype.indexOf) {

        Array.prototype.indexOf = function(obj, start) {

            for (var i = (start || 0), j = this.length; i < j; i++) {

                if (this[i] === obj) { return i; }

            }

            return -1;

        }

    }

    if (!document.querySelectorAll) {

        if (!window.jQuery) return;

    }

    function $$(selector, context) {

        if (document.querySelectorAll)

            return (context || document).querySelectorAll(selector);

        else

            return jQuery(selector, context);

    }



    /*=========================

      Check for correct selector

      ===========================*/

    if(typeof selector === 'undefined') return;



    if(!(selector.nodeType)){

        if ($$(selector).length === 0) return;

    }



     /*=========================

      _this

      ===========================*/

    var _this = this;



     /*=========================

      Default Flags and vars

      ===========================*/

    _this.touches = {

        start:0,

        startX:0,

        startY:0,

        current:0,

        currentX:0,

        currentY:0,

        diff:0,

        abs:0

    };

    _this.positions = {

        start:0,

        abs:0,

        diff:0,

        current:0

    };

    _this.times = {

        start:0,

        end:0

    };



    _this.id = (new Date()).getTime();

    _this.container = (selector.nodeType) ? selector : $$(selector)[0];

    _this.isTouched = false;

    _this.isMoved = false;

    _this.activeIndex = 0;

    _this.activeLoaderIndex = 0;

    _this.activeLoopIndex = 0;

    _this.previousIndex = null;

    _this.velocity = 0;

    _this.snapGrid = [];

    _this.slidesGrid = [];

    _this.imagesToLoad = [];

    _this.imagesLoaded = 0;

    _this.wrapperLeft=0;

    _this.wrapperRight=0;

    _this.wrapperTop=0;

    _this.wrapperBottom=0;

    var wrapper, slideSize, wrapperSize, direction, isScrolling, containerSize;



    /*=========================

      Default Parameters

      ===========================*/

    var defaults = {

        mode : 'horizontal', // or 'vertical'

        touchRatio : 1,

        speed : 300,

        freeMode : false,

        freeModeFluid : false,

        momentumRatio: 1,

        momentumBounce: true,

        momentumBounceRatio: 1,

        slidesPerView : 1,

        slidesPerGroup : 1,

        simulateTouch : true,

        followFinger : true,

        shortSwipes : true,

        moveStartThreshold:false,

        autoplay: false,

        onlyExternal : false,

        createPagination : true,

        pagination : false,

        paginationElement: 'span',

        paginationClickable: false,

        paginationAsRange: true,

        resistance : true, // or false or 100%

        scrollContainer : false,

        preventLinks : true,

        noSwiping : false, // or class

        noSwipingClass : 'swiper-no-swiping', //:)

        initialSlide: 0,

        keyboardControl: false,

        mousewheelControl : false,

        mousewheelDebounce: 600,

        useCSS3Transforms : true,

        //Loop mode

        loop:false,

        loopAdditionalSlides:0,

        //Auto Height

        calculateHeight: false,

        //Images Preloader

        updateOnImagesReady : true,

        //Form elements

        releaseFormElements : true,

        //Watch for active slide, useful when use effects on different slide states

        watchActiveIndex: false,

        //Slides Visibility Fit

        visibilityFullFit : false,

        //Slides Offset

        offsetPxBefore : 0,

        offsetPxAfter : 0,

        offsetSlidesBefore : 0,

        offsetSlidesAfter : 0,

        centeredSlides: false,

        //Queue callbacks

        queueStartCallbacks : false,

        queueEndCallbacks : false,

        //Auto Resize

        autoResize : true,

        resizeReInit : false,

        //DOMAnimation

        DOMAnimation : true,

        //Slides Loader

        loader: {

            slides:[], //array with slides

            slidesHTMLType:'inner', // or 'outer'

            surroundGroups: 1, //keep preloaded slides groups around view

            logic: 'reload', //or 'change'

            loadAllSlides: false

        },

        //Namespace

        slideElement : 'div',

        slideClass : 'swiper-slide',

        slideActiveClass : 'swiper-slide-active',

        slideVisibleClass : 'swiper-slide-visible',

        wrapperClass : 'swiper-wrapper',

        paginationElementClass: 'swiper-pagination-switch',

        paginationActiveClass : 'swiper-active-switch',

        paginationVisibleClass : 'swiper-visible-switch'

    }

    params = params || {};

    for (var prop in defaults) {

        if (prop in params && typeof params[prop]==='object') {

            for (var subProp in defaults[prop]) {

                if (! (subProp in params[prop])) {

                    params[prop][subProp] = defaults[prop][subProp];

                }

            }

        }

        else if (! (prop in params)) {

            params[prop] = defaults[prop]

        }

    }

    _this.params = params;

    if (params.scrollContainer) {

        params.freeMode = true;

        params.freeModeFluid = true;

    }

    if (params.loop) {

        params.resistance = '100%';

    }

    var isH = params.mode==='horizontal';



    /*=========================

      Define Touch Events

      ===========================*/



    _this.touchEvents = {

        touchStart : _this.support.touch || !params.simulateTouch  ? 'touchstart' : (_this.browser.ie10 ? 'MSPointerDown' : 'mousedown'),

        touchMove : _this.support.touch || !params.simulateTouch ? 'touchmove' : (_this.browser.ie10 ? 'MSPointerMove' : 'mousemove'),

        touchEnd : _this.support.touch || !params.simulateTouch ? 'touchend' : (_this.browser.ie10 ? 'MSPointerUp' : 'mouseup')

    };



    /*=========================

      Wrapper

      ===========================*/

    for (var i = _this.container.childNodes.length - 1; i >= 0; i--) {

        if (_this.container.childNodes[i].className) {

            var _wrapperClasses = _this.container.childNodes[i].className.split(/\s+/);

            for (var j = 0; j < _wrapperClasses.length; j++) {

                if (_wrapperClasses[j] === params.wrapperClass) {

                    wrapper = _this.container.childNodes[i];

                }

            }

        }

    }



    _this.wrapper = wrapper;

    /*=========================

      Slide API

      ===========================*/

    _this._extendSwiperSlide = function  (el) {

        el.append = function () {

            if (params.loop) {

                el.insertAfter(_this.slides.length-_this.loopedSlides);

                _this.removeLoopedSlides();

                _this.calcSlides();

                _this.createLoop();

            }

            else {

                _this.wrapper.appendChild(el);

            }



            _this.reInit();

            return el;

        }

        el.prepend = function () {

            if (params.loop) {

                _this.wrapper.insertBefore(el, _this.slides[_this.loopedSlides]);

                _this.removeLoopedSlides();

                _this.calcSlides();

                _this.createLoop();

            }

            else {

                _this.wrapper.insertBefore(el, _this.wrapper.firstChild);

            }

            _this.reInit();

            return el;

        }

        el.insertAfter = function (index) {

            if(typeof index === 'undefined') return false;

            var beforeSlide;



            if (params.loop) {

                beforeSlide = _this.slides[index + 1 + _this.loopedSlides];

                _this.wrapper.insertBefore(el, beforeSlide);

                _this.removeLoopedSlides();

                _this.calcSlides();

                _this.createLoop();

            }

            else {

                beforeSlide = _this.slides[index + 1];

                _this.wrapper.insertBefore(el, beforeSlide)

            }

            _this.reInit();

            return el;

        }

        el.clone = function () {

            return _this._extendSwiperSlide(el.cloneNode(true))

        }

        el.remove = function () {

            _this.wrapper.removeChild(el);

            _this.reInit();

        }

        el.html = function (html) {

            if (typeof html === 'undefined') {

                return el.innerHTML;

            }

            else {

                el.innerHTML = html;

                return el;

            }

        }

        el.index = function () {

            var index;

            for (var i = _this.slides.length - 1; i >= 0; i--) {

                if(el === _this.slides[i]) index = i;

            }

            return index;

        }

        el.isActive = function () {

            if (el.index() === _this.activeIndex) return true;

            else return false;

        }

        if (!el.swiperSlideDataStorage) el.swiperSlideDataStorage={};

        el.getData = function (name) {

            return el.swiperSlideDataStorage[name];

        }

        el.setData = function (name, value) {

            el.swiperSlideDataStorage[name] = value;

            return el;

        }

        el.data = function (name, value) {

            if (!value) {

                return el.getAttribute('data-'+name);

            }

            else {

                el.setAttribute('data-'+name,value);

                return el;

            }

        }

        el.getWidth = function (outer) {

            return _this.h.getWidth(el, outer);

        }

        el.getHeight = function (outer) {

            return _this.h.getHeight(el, outer);

        }

        el.getOffset = function() {

            return _this.h.getOffset(el);

        }

        return el;

    }



    //Calculate information about number of slides

    _this.calcSlides = function (forceCalcSlides) {

        var oldNumber = _this.slides ? _this.slides.length : false;

        _this.slides = [];

        _this.displaySlides = [];

        for (var i = 0; i < _this.wrapper.childNodes.length; i++) {

            if (_this.wrapper.childNodes[i].className) {

                var _className = _this.wrapper.childNodes[i].className;

                var _slideClasses = _className.split(' ');

                for (var j = 0; j < _slideClasses.length; j++) {

                    if(_slideClasses[j]===params.slideClass) {

                        _this.slides.push(_this.wrapper.childNodes[i]);

                    }

                }

            }

        }

        for (i = _this.slides.length - 1; i >= 0; i--) {

            _this._extendSwiperSlide(_this.slides[i]);

        }

        if (!oldNumber) return;

        if(oldNumber!==_this.slides.length || forceCalcSlides) {

            // Number of slides has been changed

            removeSlideEvents();

            addSlideEvents();

            _this.updateActiveSlide();

            if (params.createPagination && _this.params.pagination) _this.createPagination();

            _this.callPlugins('numberOfSlidesChanged');

        }

    }



    //Create Slide

    _this.createSlide = function (html, slideClassList, el) {

        var slideClassList = slideClassList || _this.params.slideClass;

        var el = el||params.slideElement;

        var newSlide = document.createElement(el);

        newSlide.innerHTML = html||'';

        newSlide.className = slideClassList;

        return _this._extendSwiperSlide(newSlide);

    }



    //Append Slide

    _this.appendSlide = function (html, slideClassList, el) {

        if (!html) return;

        if (html.nodeType) {

            return _this._extendSwiperSlide(html).append()

        }

        else {

            return _this.createSlide(html, slideClassList, el).append()

        }

    }

    _this.prependSlide = function (html, slideClassList, el) {

        if (!html) return;

        if (html.nodeType) {

            return _this._extendSwiperSlide(html).prepend()

        }

        else {

            return _this.createSlide(html, slideClassList, el).prepend()

        }

    }

    _this.insertSlideAfter = function (index, html, slideClassList, el) {

        if (typeof index === 'undefined') return false;

        if (html.nodeType) {

            return _this._extendSwiperSlide(html).insertAfter(index);

        }

        else {

            return _this.createSlide(html, slideClassList, el).insertAfter(index);

        }

    }

    _this.removeSlide = function (index) {

        if (_this.slides[index]) {

            if (params.loop) {

                if (!_this.slides[index+_this.loopedSlides]) return false;

                _this.slides[index+_this.loopedSlides].remove();

                _this.removeLoopedSlides();

                _this.calcSlides();

                _this.createLoop();

            }

            else _this.slides[index].remove();

            return true;

        }

        else return false;

    }

    _this.removeLastSlide = function () {

        if (_this.slides.length>0) {

            if (params.loop) {

                _this.slides[_this.slides.length - 1 - _this.loopedSlides].remove();

                _this.removeLoopedSlides();

                _this.calcSlides();

                _this.createLoop();

            }

            else _this.slides[ (_this.slides.length-1) ].remove();

            return true;

        }

        else {

            return false;

        }

    }

    _this.removeAllSlides = function () {

        for (var i = _this.slides.length - 1; i >= 0; i--) {

            _this.slides[i].remove()

        }

    }

    _this.getSlide = function (index) {

        return _this.slides[index]

    }

    _this.getLastSlide = function () {

        return _this.slides[ _this.slides.length-1 ]

    }

    _this.getFirstSlide = function () {

        return _this.slides[0]

    }



    //Currently Active Slide

    _this.activeSlide = function () {

        return _this.slides[_this.activeIndex]

    }



    /*=========================

      Plugins API

      ===========================*/

    var _plugins = [];

    for (var plugin in _this.plugins) {

        if (params[plugin]) {

            var p = _this.plugins[plugin](_this, params[plugin]);

            if (p) _plugins.push( p );

        }

    }

    _this.callPlugins = function(method, args) {

        if (!args) args = {}

        for (var i=0; i<_plugins.length; i++) {

            if (method in _plugins[i]) {

                _plugins[i][method](args);

            }

        }

    }





         /*=========================



     Wrapper for Callbacks : Allows additive callbacks via function arrays



     ===========================*/



    _this.fireCallback = function() {



        var callback = arguments[0];



        if( Object.prototype.toString.call( callback ) === '[object Array]' ) {



            for (var i = 0; i < callback.length; i++) {



                if (typeof callback[i] === 'function') {



                    callback[i](arguments[1], arguments[2], arguments[3], arguments[4], arguments[5])



                }



            }



        } else {



            callback(arguments[1], arguments[2], arguments[3], arguments[4], arguments[5]);



        }



    }



    function isArray (obj) {



        "use strict";



        if (Object.prototype.toString.apply( obj ) === '[object Array]') return true;



        return false;



    }







    /**



+     * Allows user to add callbacks, rather than replace them



+     * @param callback



+     * @param func



+     * @return {*}



+     */



    _this.addCallback = function (callback, func) {



        "use strict";



        var _this = this, tempFunc;



        if (_this.params['on' + callback]) {



           if (isArray(this.params['on' + callback])) {



                return this.params['on' + callback].push(func);



            } else if (typeof this.params['on' + callback] === 'function') {



                tempFunc = this.params['on' + callback];



                this.params['on' + callback] = [];



                this.params['on' + callback].push(tempFunc);



               return this.params['on' + callback].push(func);



            }



        } else {



            this.params['on' + callback] = [];



           return this.params['on' + callback].push(func);



        }



    }



    _this.removeCallbacks = function (callback) {



        if (_this.params['on' + callback]) {



            return _this.params['on' + callback] = null;



        }



    }







    /*=========================





    /*=========================

      WP8 Fix

      ===========================*/

    if (_this.browser.ie10 && !params.onlyExternal) {

        _this.wrapper.classList.add('swiper-wp8-' + (isH ? 'horizontal' : 'vertical'));

    }



    /*=========================

      Free Mode Class

      ===========================*/

    if (params.freeMode) {

        _this.container.className+=' swiper-free-mode';

    }



    /*==================================================

        Init/Re-init/Resize Fix

    ====================================================*/

    _this.initialized = false;

    _this.init = function(force, forceCalcSlides) {

        var _width = _this.h.getWidth(_this.container);

        var _height = _this.h.getHeight(_this.container);

        if (_width===_this.width && _height===_this.height && !force) return;

        _this.width = _width;

        _this.height = _height;



        containerSize = isH ? _width : _height;

        var wrapper = _this.wrapper;



        if (force) {

            _this.calcSlides(forceCalcSlides);

        }



        if (params.slidesPerView==='auto') {

            //Auto mode

            var slidesWidth = 0;

            var slidesHeight = 0;



            //Unset Styles

            if (params.slidesOffset>0) {

                wrapper.style.paddingLeft = '';

                wrapper.style.paddingRight = '';

                wrapper.style.paddingTop = '';

                wrapper.style.paddingBottom = '';

            }

            wrapper.style.width = '';

            wrapper.style.height = '';

            if (params.offsetPxBefore>0) {

                if (isH) _this.wrapperLeft = params.offsetPxBefore;

                else _this.wrapperTop = params.offsetPxBefore;

            }

            if (params.offsetPxAfter>0) {

                if (isH) _this.wrapperRight = params.offsetPxAfter;

                else _this.wrapperBottom = params.offsetPxAfter;

            }



            if (params.centeredSlides) {

                if (isH) {

                    _this.wrapperLeft = (containerSize - this.slides[0].getWidth(true) )/2;

                    _this.wrapperRight = (containerSize - _this.slides[ _this.slides.length-1 ].getWidth(true))/2;

                }

                else {

                    _this.wrapperTop = (containerSize - _this.slides[0].getHeight(true))/2;

                    _this.wrapperBottom = (containerSize - _this.slides[ _this.slides.length-1 ].getHeight(true))/2;

                }

            }



            if (isH) {

                if (_this.wrapperLeft>=0) wrapper.style.paddingLeft = _this.wrapperLeft+'px';

                if (_this.wrapperRight>=0) wrapper.style.paddingRight = _this.wrapperRight+'px';

            }

            else {

                if (_this.wrapperTop>=0) wrapper.style.paddingTop = _this.wrapperTop+'px';

                if (_this.wrapperBottom>=0) wrapper.style.paddingBottom = _this.wrapperBottom+'px';

            }

            var slideLeft = 0;

            var centeredSlideLeft=0;

            _this.snapGrid = [];

            _this.slidesGrid = [];



            var slideMaxHeight = 0;

            for(var i = 0; i<_this.slides.length; i++) {

                var slideWidth = _this.slides[i].getWidth(true);

                var slideHeight = _this.slides[i].getHeight(true);

                if (params.calculateHeight) {

                    slideMaxHeight = Math.max(slideMaxHeight, slideHeight)

                }

                var _slideSize = isH ? slideWidth : slideHeight;

                if (params.centeredSlides) {

                    var nextSlideWidth = i === _this.slides.length-1 ? 0 : _this.slides[i+1].getWidth(true);

                    var nextSlideHeight = i === _this.slides.length-1 ? 0 : _this.slides[i+1].getHeight(true);

                    var nextSlideSize = isH ? nextSlideWidth : nextSlideHeight;

                    if (_slideSize>containerSize) {

                        for (var j=0; j<=Math.floor(_slideSize/(containerSize+_this.wrapperLeft)); j++) {

                            if (j === 0) _this.snapGrid.push(slideLeft+_this.wrapperLeft);

                            else _this.snapGrid.push(slideLeft+_this.wrapperLeft+containerSize*j);

                        }

                        _this.slidesGrid.push(slideLeft+_this.wrapperLeft);

                    }

                    else {

                        _this.snapGrid.push(centeredSlideLeft);

                        _this.slidesGrid.push(centeredSlideLeft);

                    }



                    centeredSlideLeft += _slideSize/2 + nextSlideSize/2;



                }

                else {

                    if (_slideSize>containerSize) {

                        for (var j=0; j<=Math.floor(_slideSize/containerSize); j++) {

                            _this.snapGrid.push(slideLeft+containerSize*j);

                        }

                    }

                    else {

                        _this.snapGrid.push(slideLeft);

                    }

                    _this.slidesGrid.push(slideLeft);

                }



                slideLeft += _slideSize;



                slidesWidth += slideWidth;

                slidesHeight += slideHeight;

            }

            if (params.calculateHeight) _this.height = slideMaxHeight;

            if(isH) {

                wrapperSize = slidesWidth + _this.wrapperRight + _this.wrapperLeft;

                wrapper.style.width = (slidesWidth)+'px';

                wrapper.style.height = (_this.height)+'px';

            }

            else {

                wrapperSize = slidesHeight + _this.wrapperTop + _this.wrapperBottom;

                wrapper.style.width = (_this.width)+'px';

                wrapper.style.height = (slidesHeight)+'px';

            }



        }

        else if (params.scrollContainer) {

            //Scroll Container

            wrapper.style.width = '';

            wrapper.style.height = '';

            var wrapperWidth = _this.slides[0].getWidth(true);

            var wrapperHeight = _this.slides[0].getHeight(true);

            wrapperSize = isH ? wrapperWidth : wrapperHeight;

            wrapper.style.width = wrapperWidth+'px';

            wrapper.style.height = wrapperHeight+'px';

            slideSize = isH ? wrapperWidth : wrapperHeight;



        }

        else {

            //For usual slides

            if (params.calculateHeight) {

                var slideMaxHeight = 0;

                var wrapperHeight = 0;

                //ResetWrapperSize

                if (!isH) _this.container.style.height= '';

                wrapper.style.height='';



                for (var i=0; i<_this.slides.length; i++) {

                    //ResetSlideSize

                    _this.slides[i].style.height='';

                    slideMaxHeight = Math.max( _this.slides[i].getHeight(true), slideMaxHeight );

                    if (!isH) wrapperHeight+=_this.slides[i].getHeight(true);

                }

                var slideHeight = slideMaxHeight;

                _this.height = slideHeight;



                if (isH) wrapperHeight = slideHeight;

                else containerSize = slideHeight, _this.container.style.height= containerSize+'px';

            }

            else {

                var slideHeight = isH ? _this.height : _this.height/params.slidesPerView;

                var wrapperHeight = isH ? _this.height : _this.slides.length*slideHeight;

            }

            var slideWidth = isH ? _this.width/params.slidesPerView : _this.width;

            var wrapperWidth = isH ? _this.slides.length*slideWidth : _this.width;

            slideSize = isH ? slideWidth : slideHeight;



            if (params.offsetSlidesBefore>0) {

                if (isH) _this.wrapperLeft = slideSize*params.offsetSlidesBefore;

                else _this.wrapperTop = slideSize*params.offsetSlidesBefore;

            }

            if (params.offsetSlidesAfter>0) {

                if (isH) _this.wrapperRight = slideSize*params.offsetSlidesAfter;

                else _this.wrapperBottom = slideSize*params.offsetSlidesAfter;

            }

            if (params.offsetPxBefore>0) {

                if (isH) _this.wrapperLeft = params.offsetPxBefore;

                else _this.wrapperTop = params.offsetPxBefore;

            }

            if (params.offsetPxAfter>0) {

                if (isH) _this.wrapperRight = params.offsetPxAfter;

                else _this.wrapperBottom = params.offsetPxAfter;

            }

            if (params.centeredSlides) {

                if (isH) {

                    _this.wrapperLeft = (containerSize - slideSize)/2;

                    _this.wrapperRight = (containerSize - slideSize)/2;

                }

                else {

                    _this.wrapperTop = (containerSize - slideSize)/2;

                    _this.wrapperBottom = (containerSize - slideSize)/2;

                }

            }

            if (isH) {

                if (_this.wrapperLeft>0) wrapper.style.paddingLeft = _this.wrapperLeft+'px';

                if (_this.wrapperRight>0) wrapper.style.paddingRight = _this.wrapperRight+'px';

            }

            else {

                if (_this.wrapperTop>0) wrapper.style.paddingTop = _this.wrapperTop+'px';

                if (_this.wrapperBottom>0) wrapper.style.paddingBottom = _this.wrapperBottom+'px';

            }



            wrapperSize = isH ? wrapperWidth + _this.wrapperRight + _this.wrapperLeft : wrapperHeight + _this.wrapperTop + _this.wrapperBottom;

            if (!params.cssWidthAndHeight) {

                if (parseFloat(wrapperWidth) > 0) {

                    wrapper.style.width = wrapperWidth+'px';



                }



                if (parseFloat(wrapperHeight) > 0) {

                    wrapper.style.height = wrapperHeight+'px';



                }



            }

            var slideLeft = 0;

            _this.snapGrid = [];

            _this.slidesGrid = [];

            for (var i=0; i<_this.slides.length; i++) {

                _this.snapGrid.push(slideLeft);

                _this.slidesGrid.push(slideLeft);

                slideLeft+=slideSize;

                if (!params.cssWidthAndHeight) {

                    if (parseFloat(slideWidth) > 0) {

                        _this.slides[i].style.width = slideWidth+'px';



                    }



                    if (parseFloat(slideHeight) > 0) {

                        _this.slides[i].style.height = slideHeight+'px';



                    }



                }

            }



        }



        if (!_this.initialized) {

            _this.callPlugins('onFirstInit');

            if (params.onFirstInit) _this.fireCallback(params.onFirstInit,_this);

        }

        else {

            _this.callPlugins('onInit');

             if (params.onInit) _this.fireCallback(params.onInit,_this);

        }

        _this.initialized = true;

    }

    

    _this.reInit = function (forceCalcSlides) {

        _this.init(true, forceCalcSlides);

    }

    

    _this.resizeFix = function (reInit) {



        _this.callPlugins('beforeResizeFix');

        

        _this.init(params.resizeReInit || reInit);

        

        // swipe to active slide in fixed mode

        if (!params.freeMode) {

            _this.swipeTo((params.loop ? _this.activeLoopIndex : _this.activeIndex), 0, false);

        }

        

        // move wrapper to the beginning in free mode

        else if (_this.getWrapperTranslate() < -maxWrapperPosition()) {

        	_this.setWrapperTransition(0);

            _this.setWrapperTranslate(-maxWrapperPosition());

        }

        

        _this.callPlugins('afterResizeFix');

    }



    /*==========================================

        Max and Min Positions

    ============================================*/

    function maxWrapperPosition() {

        var a = (wrapperSize - containerSize);

        if (params.freeMode) {

            a = wrapperSize - containerSize;

        }

        // if (params.loop) a -= containerSize;

        if (params.slidesPerView > _this.slides.length) a = 0;

        if (a<0) a = 0;

        return a;

    }

    function minWrapperPosition() {

        var a = 0;

        // if (params.loop) a = containerSize;

        return a;

    }



    /*==========================================

        Event Listeners

    ============================================*/

    function initEvents() {

        var bind = _this.h.addEventListener;

        

        //Touch Events

        if (!_this.browser.ie10) {

            if (_this.support.touch) {

                bind(_this.wrapper, 'touchstart', onTouchStart);

                bind(_this.wrapper, 'touchmove', onTouchMove);

                bind(_this.wrapper, 'touchend', onTouchEnd);

            }

            if (params.simulateTouch) {

                bind(_this.wrapper, 'mousedown', onTouchStart);

                bind(document, 'mousemove', onTouchMove);

                bind(document, 'mouseup', onTouchEnd);

            }

        }

        else {

            bind(_this.wrapper, _this.touchEvents.touchStart, onTouchStart);

            bind(document, _this.touchEvents.touchMove, onTouchMove);

            bind(document, _this.touchEvents.touchEnd, onTouchEnd);

        }



        //Resize Event

        if (params.autoResize) {

            bind(window, 'resize', _this.resizeFix);

        }

        //Slide Events

        addSlideEvents();

        //Mousewheel

        _this._wheelEvent = false;

        if (params.mousewheelControl) {

            if ( document.onmousewheel !== undefined ) {

                _this._wheelEvent = "mousewheel";

            }

            try {

                WheelEvent("wheel");

                _this._wheelEvent = "wheel";

            } catch (e) {}

            if ( !_this._wheelEvent ) {

                _this._wheelEvent = "DOMMouseScroll";

            }



            if (_this._wheelEvent) {

                bind(_this.container, _this._wheelEvent, handleMousewheel);

            }

        }



        //Keyboard

        if (params.keyboardControl) {

            bind(document, 'keydown', handleKeyboardKeys);

        }

        if (params.updateOnImagesReady) {

            _this.imagesToLoad = $$('img', _this.container);



            for (var i=0; i<_this.imagesToLoad.length; i++) {

                _loadImage(_this.imagesToLoad[i].getAttribute('src'))

            }

        }

        function _loadImage(src) {

            var image = new Image();

            image.onload = function(){

                _this.imagesLoaded++;

                if (_this.imagesLoaded==_this.imagesToLoad.length) {

                    _this.reInit();

                    if (params.onImagesReady) _this.fireCallback(params.onImagesReady, _this);

                }

            }

            image.src = src;

        }

    }



    //Remove Event Listeners

    _this.destroy = function(removeResizeFix){

    	var unbind = _this.h.removeEventListener;

    	

        //Touch Events

        if (!_this.browser.ie10) {

            if (_this.support.touch) {

                unbind(_this.wrapper, 'touchstart', onTouchStart);

                unbind(_this.wrapper, 'touchmove', onTouchMove);

                unbind(_this.wrapper, 'touchend', onTouchEnd);

            }

            if (params.simulateTouch) {

                unbind(_this.wrapper, 'mousedown', onTouchStart);

                unbind(document, 'mousemove', onTouchMove);

                unbind(document, 'mouseup', onTouchEnd);

            }

        }

        else {

            unbind(_this.wrapper, _this.touchEvents.touchStart, onTouchStart);

            unbind(document, _this.touchEvents.touchMove, onTouchMove);

            unbind(document, _this.touchEvents.touchEnd, onTouchEnd);

        }



        //Resize Event

        if (params.autoResize) {

            unbind(window, 'resize', _this.resizeFix);

        }

        

        //Init Slide Events

        removeSlideEvents();



        //Pagination

        if (params.paginationClickable) {

            removePaginationEvents();

        }



        //Mousewheel

        if (params.mousewheelControl && _this._wheelEvent) {

           unbind(_this.container, _this._wheelEvent, handleMousewheel);

        }



        //Keyboard

        if (params.keyboardControl) {

            unbind(document, 'keydown', handleKeyboardKeys);

        }



        //Stop autoplay

        if (params.autoplay) {

            _this.stopAutoplay();

        }

        _this.callPlugins('onDestroy');



        //Destroy variable

        _this = null;

    }

    function addSlideEvents() {

    	var bind = _this.h.addEventListener,

    		i;



        //Prevent Links Events

        if (params.preventLinks) {

            var links = $$('a', _this.container);

            for (i=0; i<links.length; i++) {

                bind(links[i], 'click', preventClick);

            }

        }

        //Release Form Elements

        if (params.releaseFormElements) {

            var formElements = $$('input, textarea, select', _this.container);

            for (i=0; i<formElements.length; i++) {

                bind(formElements[i], _this.touchEvents.touchStart, releaseForms, true);

            }

        }



        //Slide Clicks & Touches

        if (params.onSlideClick) {

            for (i=0; i<_this.slides.length; i++) {

                bind(_this.slides[i], 'click', slideClick);

            }

        }

        if (params.onSlideTouch) {

            for (i=0; i<_this.slides.length; i++) {

                bind(_this.slides[i], _this.touchEvents.touchStart, slideTouch);

            }

        }

    }

    function removeSlideEvents() {

    	var unbind = _this.h.removeEventListener,

    		i;



        //Slide Clicks & Touches

        if (params.onSlideClick) {

            for (i=0; i<_this.slides.length; i++) {

                unbind(_this.slides[i], 'click', slideClick);

            }

        }

        if (params.onSlideTouch) {

            for (i=0; i<_this.slides.length; i++) {

                unbind(_this.slides[i], _this.touchEvents.touchStart, slideTouch);

            }

        }

        //Release Form Elements

        if (params.releaseFormElements) {

            var formElements = $$('input, textarea, select', _this.container);

            for (i=0; i<formElements.length; i++) {

                unbind(formElements[i], _this.touchEvents.touchStart, releaseForms, true);

            }

        }

        //Prevent Links Events

        if (params.preventLinks) {

            var links = $$('a', _this.container);

            for (i=0; i<links.length; i++) {

                unbind(links[i], 'click', preventClick);

            }

        }

    }

    /*==========================================

        Keyboard Control

    ============================================*/

    function handleKeyboardKeys (e) {

        var kc = e.keyCode || e.charCode;

        if (kc==37 || kc==39 || kc==38 || kc==40) {

            var inView = false;

            //Check that swiper should be inside of visible area of window

            var swiperOffset = _this.h.getOffset( _this.container );

            var scrollLeft = _this.h.windowScroll().left;

            var scrollTop = _this.h.windowScroll().top;

            var windowWidth = _this.h.windowWidth();

            var windowHeight = _this.h.windowHeight();

            var swiperCoord = [

                [swiperOffset.left, swiperOffset.top],

                [swiperOffset.left + _this.width, swiperOffset.top],

                [swiperOffset.left, swiperOffset.top + _this.height],

                [swiperOffset.left + _this.width, swiperOffset.top + _this.height]

            ]

            for (var i=0; i<swiperCoord.length; i++) {

                var point = swiperCoord[i];

                if (

                    point[0]>=scrollLeft && point[0]<=scrollLeft+windowWidth &&

                    point[1]>=scrollTop && point[1]<=scrollTop+windowHeight

                ) {

                    inView = true;

                }



            }

            if (!inView) return;

        }

        if (isH) {

            if (kc==37 || kc==39) {

                if (e.preventDefault) e.preventDefault();

                else e.returnValue = false;

            }

            if (kc == 39) _this.swipeNext();

            if (kc == 37) _this.swipePrev();

        }

        else {

            if (kc==38 || kc==40) {

                if (e.preventDefault) e.preventDefault();

                else e.returnValue = false;

            }

            if (kc == 40) _this.swipeNext();

            if (kc == 38) _this.swipePrev();

        }

    }



    /*==========================================

        Mousewheel Control

    ============================================*/

    var allowScrollChange = true;

    var lastScrollTime = (new Date()).getTime();

    function handleMousewheel (e) {

        var we = _this._wheelEvent;

        var delta = 0;

        //Opera & IE

        if (e.detail) delta = -e.detail;

        //WebKits

        else if (we == 'mousewheel') delta = e.wheelDelta;

        //Old FireFox

        else if (we == 'DOMMouseScroll') delta = -e.detail;

        //New FireFox

        else if (we == 'wheel') {

            delta = Math.abs(e.deltaX)>Math.abs(e.deltaY) ? - e.deltaX : - e.deltaY;

        }

        if (!params.freeMode) {

            if(delta<0) _this.swipeNext();

            else _this.swipePrev();

        }

        else {

            //Freemode or scrollContainer:

            var position = _this.getWrapperTranslate() + delta;

            

            if (position > 0) position = 0;

            if (position < -maxWrapperPosition()) position = -maxWrapperPosition();

            

            _this.setWrapperTransition(0);

            _this.setWrapperTranslate(position);

            _this.updateActiveSlide(position);

        }

        if (params.autoplay) _this.stopAutoplay();



        if(e.preventDefault) e.preventDefault();

        else e.returnValue = false;

        return false;

    }



    /*=========================

      Grab Cursor

      ===========================*/

    if (params.grabCursor) {

    	var containerStyle = _this.container.style;

        containerStyle.cursor = 'move';

        containerStyle.cursor = 'grab';

        containerStyle.cursor = '-moz-grab';

        containerStyle.cursor = '-webkit-grab';

    }



    /*=========================

      Slides Events Handlers

      ===========================*/

    

    _this.allowSlideClick = true;

    function slideClick(event) {

        if (_this.allowSlideClick) {

            

            setClickedSlide(event);

            this.fireCallback(params.onSlideClick, _this, event);

        }

    }

    

    function slideTouch(event) {

    	

        setClickedSlide(event);

       _this.fireCallback(params.onSlideTouch, _this, event);

    }

    

    function setClickedSlide(event) {

		

		// IE 6-8 support

		if (!event.currentTarget) {

			var element = event.srcElement;

			do {

				if (element.className.indexOf(params.slideClass) > -1) {

                	break;

        		}

			}

			while (element = element.parentNode);

			_this.clickedSlide = element;

		}

		else {

			_this.clickedSlide = event.currentTarget;

		}

		

        _this.clickedSlideIndex     = _this.slides.indexOf(_this.clickedSlide);

        _this.clickedSlideLoopIndex = _this.clickedSlideIndex - (_this.loopedSlides || 0);

    }

    

    _this.allowLinks = true;

    function preventClick(e) {

        if (!_this.allowLinks) {

            if(e.preventDefault) e.preventDefault();

            else e.returnValue = false;

            return false;

        }

    }

    function releaseForms(e) {

        if (e.stopPropagation) e.stopPropagation();

        else e.returnValue = false;

        return false;

    }



    /*==================================================

        Event Handlers

    ====================================================*/

    var isTouchEvent = false;

    var allowThresholdMove;

    var allowMomentumBounce = true;

    function onTouchStart(event) {



    	//vc gallery when using lightbox fix

    	if(jQuery(event.target).parents('.swiper-container').attr('data-desktop-swipe') == 'false' && !Modernizr.touch) return false;

    	

    	//deactivate touch if only one slide

		if(jQuery(event.target).parents('.swiper-container').find('.swiper-slide').length == 1) return false;

		

		//deactivate touch for duplicate transitions

		if(jQuery(event.target).parents('.swiper-container').find('.swiper-slide.duplicate-transition').length > 0) return false;

		

        if (params.preventLinks) _this.allowLinks = true;

        //Exit if slider is already was touched

        if (_this.isTouched || params.onlyExternal) {

            return false;

        }



        if (params.noSwiping && (event.target || event.srcElement) && noSwipingSlide(event.target || event.srcElement)) return false;

        allowMomentumBounce = false;



        //Check For Nested Swipers

        _this.isTouched = true;

        isTouchEvent = event.type=='touchstart';



        if (!isTouchEvent || event.targetTouches.length == 1 ) {

            _this.callPlugins('onTouchStartBegin');



            if(!isTouchEvent) {

                if(event.preventDefault) event.preventDefault();

                else event.returnValue = false;

            }

            

            var pageX = isTouchEvent ? event.targetTouches[0].pageX : (event.pageX || event.clientX);

            var pageY = isTouchEvent ? event.targetTouches[0].pageY : (event.pageY || event.clientY);



            //Start Touches to check the scrolling

            _this.touches.startX = _this.touches.currentX = pageX;

            _this.touches.startY = _this.touches.currentY = pageY;



            _this.touches.start = _this.touches.current = isH ? pageX : pageY;



            //Set Transition Time to 0

            _this.setWrapperTransition(0);



            //Get Start Translate Position

            _this.positions.start = _this.positions.current = _this.getWrapperTranslate();



            //Set Transform

            _this.setWrapperTranslate(_this.positions.start);



            //TouchStartTime

            _this.times.start = (new Date()).getTime();



            //Unset Scrolling

            isScrolling = undefined;



            //Set Treshold

            if (params.moveStartThreshold>0) allowThresholdMove = false;



            //CallBack

            if (params.onTouchStart) _this.fireCallback(params.onTouchStart, _this);

            _this.callPlugins('onTouchStartEnd');



        }

    }

    var velocityPrevPosition, velocityPrevTime;

    function onTouchMove(event) {

        // If slider is not touched - exit

        if (!_this.isTouched || params.onlyExternal) return;

        if (isTouchEvent && event.type=='mousemove') return;



        var pageX = isTouchEvent ? event.targetTouches[0].pageX : (event.pageX || event.clientX);

        var pageY = isTouchEvent ? event.targetTouches[0].pageY : (event.pageY || event.clientY);



        //check for scrolling

        if ( typeof isScrolling === 'undefined' && isH) {

          isScrolling = !!( isScrolling || Math.abs(pageY - _this.touches.startY) > Math.abs( pageX - _this.touches.startX ) );

        }

        if ( typeof isScrolling === 'undefined' && !isH) {

          isScrolling = !!( isScrolling || Math.abs(pageY - _this.touches.startY) < Math.abs( pageX - _this.touches.startX ) );

        }

        if (isScrolling ) {

            _this.isTouched = false;

            return;

        }



        //Check For Nested Swipers

        if (event.assignedToSwiper) {

            _this.isTouched = false;

            return;

        }

        event.assignedToSwiper = true;



        //Block inner links

        if (params.preventLinks) {

            _this.allowLinks = false;

        }

        if (params.onSlideClick) {

            _this.allowSlideClick = false;

        }



        //Stop AutoPlay if exist

        if (params.autoplay) {

            _this.stopAutoplay();

        }

        if (!isTouchEvent || event.touches.length == 1) {



        	//Moved Flag

        	if (!_this.isMoved) {

        		_this.callPlugins('onTouchMoveStart');

        		

				if (params.loop) {

					_this.fixLoop();

					_this.positions.start = _this.getWrapperTranslate();

				}

				if (params.onTouchMoveStart) _this.fireCallback(params.onTouchMoveStart, _this);

        	}

        	_this.isMoved = true;

        	

        	// cancel event

            if(event.preventDefault) event.preventDefault();

            else event.returnValue = false;



            _this.touches.current = isH ? pageX : pageY ;



            _this.positions.current = (_this.touches.current - _this.touches.start) * params.touchRatio + _this.positions.start;



            //Resistance Callbacks

            if(_this.positions.current > 0 && params.onResistanceBefore) {

                _this.fireCallback(params.onResistanceBefore, _this, _this.positions.current);

            }

            if(_this.positions.current < -maxWrapperPosition() && params.onResistanceAfter) {

                _this.fireCallback(params.onResistanceAfter, _this, Math.abs(_this.positions.current + maxWrapperPosition()));

            }

            //Resistance

            if (params.resistance && params.resistance!='100%') {

                //Resistance for Negative-Back sliding

                if(_this.positions.current > 0) {

                    var resistance = 1 - _this.positions.current/containerSize/2;

                    if (resistance < 0.5)

                        _this.positions.current = (containerSize/2);

                    else

                        _this.positions.current = _this.positions.current * resistance;

                }

                //Resistance for After-End Sliding

                if ( _this.positions.current < -maxWrapperPosition() ) {



                    var diff = (_this.touches.current - _this.touches.start)*params.touchRatio + (maxWrapperPosition()+_this.positions.start);

                    var resistance = (containerSize+diff)/(containerSize);

                    var newPos = _this.positions.current-diff*(1-resistance)/2;

                    var stopPos = -maxWrapperPosition() - containerSize/2;



                    if (newPos < stopPos || resistance<=0)

                        _this.positions.current = stopPos;

                    else

                        _this.positions.current = newPos;

                }

            }

            if (params.resistance && params.resistance=='100%') {

                //Resistance for Negative-Back sliding

                if(_this.positions.current > 0 && !(params.freeMode&&!params.freeModeFluid)) {

                    _this.positions.current = 0;

                }

                //Resistance for After-End Sliding

                if ( (_this.positions.current) < -maxWrapperPosition() && !(params.freeMode&&!params.freeModeFluid)) {

                    _this.positions.current = -maxWrapperPosition();

                }

            }

            //Move Slides

            if (!params.followFinger) return;



            if (!params.moveStartThreshold) {

                _this.setWrapperTranslate(_this.positions.current);

            }

            else {

                if ( Math.abs(_this.touches.current - _this.touches.start)>params.moveStartThreshold || allowThresholdMove) {

                    allowThresholdMove = true;

                    _this.setWrapperTranslate(_this.positions.current);

                }

                else {

                    _this.positions.current = _this.positions.start;

                }

            }



            if (params.freeMode || params.watchActiveIndex) {

                _this.updateActiveSlide(_this.positions.current);

            }



            //Grab Cursor

             //Grab Cursor

            if (params.grabCursor) {

                _this.container.style.cursor = 'move';

                _this.container.style.cursor = 'grabbing';

                _this.container.style.cursor = '-moz-grabbing';

                _this.container.style.cursor = '-webkit-grabbing';

            }  

            //Velocity

            if (!velocityPrevPosition) velocityPrevPosition = _this.touches.current;

            if (!velocityPrevTime) velocityPrevTime = (new Date).getTime();

            _this.velocity = (_this.touches.current - velocityPrevPosition)/((new Date).getTime() - velocityPrevTime)/2;



            if (Math.abs(_this.touches.current - velocityPrevPosition)<2) _this.velocity=0;

            velocityPrevPosition = _this.touches.current;

            velocityPrevTime = (new Date).getTime();

            //Callbacks

            _this.callPlugins('onTouchMoveEnd');

            if (params.onTouchMove) _this.fireCallback(params.onTouchMove, _this);



            return false;

        }

    }

    function onTouchEnd(event) {

        //Check For scrolling

        if (isScrolling) {

            _this.swipeReset();

        }

        // If slider is not touched exit

        if ( params.onlyExternal || !_this.isTouched ) return;

        _this.isTouched = false



        //Return Grab Cursor

        if (params.grabCursor) {

            _this.container.style.cursor = 'move';

            _this.container.style.cursor = 'grab';

            _this.container.style.cursor = '-moz-grab';

            _this.container.style.cursor = '-webkit-grab';

        }



        //Check for Current Position

        if (!_this.positions.current && _this.positions.current!==0) {

            _this.positions.current = _this.positions.start

        }



        //For case if slider touched but not moved

        if (params.followFinger) {

            _this.setWrapperTranslate(_this.positions.current);

        }



        // TouchEndTime

        _this.times.end = (new Date()).getTime();



        //Difference

        _this.touches.diff = _this.touches.current - _this.touches.start

        _this.touches.abs = Math.abs(_this.touches.diff)



        _this.positions.diff = _this.positions.current - _this.positions.start

        _this.positions.abs = Math.abs(_this.positions.diff)



        var diff = _this.positions.diff ;

        var diffAbs =_this.positions.abs ;

        var timeDiff = _this.times.end - _this.times.start



        if(diffAbs < 5 && (timeDiff) < 300 && _this.allowLinks == false) {

            if (!params.freeMode && diffAbs!=0) _this.swipeReset()

            //Release inner links

            if (params.preventLinks) {

                _this.allowLinks = true;

            }

            if (params.onSlideClick) {

                _this.allowSlideClick = true;

            }

        }

        

        setTimeout(function () {

            //Release inner links

            if (params.preventLinks) {

                _this.allowLinks = true;

            }

            if (params.onSlideClick) {

                _this.allowSlideClick = true;

            }

        }, 100);



        var maxPosition = maxWrapperPosition();



        //Not moved or Prevent Negative Back Sliding/After-End Sliding

        if (!_this.isMoved && params.freeMode) {

            _this.isMoved = false;

            if (params.onTouchEnd) _this.fireCallback(params.onTouchEnd, _this);

            _this.callPlugins('onTouchEnd');

            return;   

        }

        if (!_this.isMoved || _this.positions.current > 0 || _this.positions.current < -maxPosition) {

            _this.swipeReset();

           if (params.onTouchEnd) _this.fireCallback(params.onTouchEnd, _this);

            _this.callPlugins('onTouchEnd');

            return;

        }



        _this.isMoved = false;



        //Free Mode

        if (params.freeMode) {

            if ( params.freeModeFluid ) {

                var momentumDuration = 1000*params.momentumRatio;

                var momentumDistance = _this.velocity*momentumDuration;

                var newPosition = _this.positions.current + momentumDistance

                var doBounce = false;

                var afterBouncePosition;

                var bounceAmount = Math.abs( _this.velocity )*20*params.momentumBounceRatio;

                if (newPosition < -maxPosition) {

                    if (params.momentumBounce && _this.support.transitions) {

                        if (newPosition + maxPosition < -bounceAmount) newPosition = -maxPosition-bounceAmount;

                        afterBouncePosition = -maxPosition;

                        doBounce=true;

                        allowMomentumBounce = true;

                    }

                    else newPosition = -maxPosition;

                }

                if (newPosition > 0) {

                    if (params.momentumBounce && _this.support.transitions) {

                        if (newPosition>bounceAmount) newPosition = bounceAmount;

                        afterBouncePosition = 0

                        doBounce = true;

                        allowMomentumBounce = true;

                    }

                    else newPosition = 0;

                }

                //Fix duration

                if (_this.velocity!=0) momentumDuration = Math.abs((newPosition - _this.positions.current)/_this.velocity)



                _this.setWrapperTranslate(newPosition);



                _this.setWrapperTransition( momentumDuration );



                if (params.momentumBounce && doBounce) {

                    _this.wrapperTransitionEnd(function () {

                        if (!allowMomentumBounce) return;

                        

                        if (params.onMomentumBounce) params.onMomentumBounce(_this);

                        

                        _this.setWrapperTranslate(afterBouncePosition);

                        _this.setWrapperTransition(300);

                    })

                }



                _this.updateActiveSlide(newPosition)

            }

            if (!params.freeModeFluid || timeDiff >= 300) _this.updateActiveSlide(_this.positions.current)



            if (params.onTouchEnd) params.onTouchEnd(_this)

            _this.callPlugins('onTouchEnd');

            return;

        }



        //Direction

        direction = diff < 0 ? "toNext" : "toPrev"



        //Short Touches

        if (direction=="toNext" && ( timeDiff <= 300 ) ) {

            if (diffAbs < 30 || !params.shortSwipes) _this.swipeReset()

            else _this.swipeNext(true);

        }



        if (direction=="toPrev" && ( timeDiff <= 300 ) ) {

            if (diffAbs < 30 || !params.shortSwipes) _this.swipeReset()

            else _this.swipePrev(true);

        }



        //Long Touches

        var targetSlideSize = 0;

        if(params.slidesPerView == 'auto') {

            //Define current slide's width

            var currentPosition = Math.abs(_this.getWrapperTranslate());

            var slidesOffset = 0;

            var _slideSize;

            for (var i=0; i<_this.slides.length; i++) {

                _slideSize = isH ? _this.slides[i].getWidth(true) : _this.slides[i].getHeight(true);

                slidesOffset+= _slideSize;

                if (slidesOffset>currentPosition) {

                    targetSlideSize = _slideSize;

                    break;

                }

            }

            if (targetSlideSize>containerSize) targetSlideSize = containerSize;

        }

        else {

            targetSlideSize = slideSize * params.slidesPerView;

        }

        if (direction=="toNext" && ( timeDiff > 300 ) ) {

            if (diffAbs >= targetSlideSize*0.5) {

                _this.swipeNext(true)

            }

            else {

                _this.swipeReset()

            }

        }

        if (direction=="toPrev" && ( timeDiff > 300 ) ) {

            if (diffAbs >= targetSlideSize*0.5) {

                _this.swipePrev(true);

            }

            else {

                _this.swipeReset()

            }

        }

        if (params.onTouchEnd) params.onTouchEnd(_this)

        _this.callPlugins('onTouchEnd');

    }





    /*==================================================

        noSwiping Bubble Check by Isaac Strack

    ====================================================*/

    function noSwipingSlide(el){

        /*This function is specifically designed to check the parent elements for the noSwiping class, up to the wrapper.

        We need to check parents because while onTouchStart bubbles, _this.isTouched is checked in onTouchStart, which stops the bubbling.

        So, if a text box, for example, is the initial target, and the parent slide container has the noSwiping class, the _this.isTouched

        check will never find it, and what was supposed to be noSwiping is able to be swiped.

        This function will iterate up and check for the noSwiping class in parents, up through the wrapperClass.*/



        // First we create a truthy variable, which is that swiping is allowd (noSwiping = false)

        var noSwiping = false;

    

        // Now we iterate up (parentElements) until we reach the node with the wrapperClass.

        do{



            // Each time, we check to see if there's a 'swiper-no-swiping' class (noSwipingClass).

            if (el.className.indexOf(params.noSwipingClass)>-1)

            {

                noSwiping = true; // If there is, we set noSwiping = true;

            }



            el = el.parentElement;  // now we iterate up (parent node)



        } while(!noSwiping && el.parentElement && el.className.indexOf(params.wrapperClass)==-1); // also include el.parentElement truthy, just in case.



        // because we didn't check the wrapper itself, we do so now, if noSwiping is false:

        if (!noSwiping && el.className.indexOf(params.wrapperClass)>-1 && el.className.indexOf(params.noSwipingClass)>-1)

            noSwiping = true; // if the wrapper has the noSwipingClass, we set noSwiping = true;



        return noSwiping;

    }



    /*==================================================

        Swipe Functions

    ====================================================*/

    _this.swipeNext = function(internal){

        if (!internal && params.loop) _this.fixLoop();

        _this.callPlugins('onSwipeNext');

        var currentPosition = _this.getWrapperTranslate();

        var newPosition = currentPosition;

        if (params.slidesPerView=='auto') {

            for (var i=0; i<_this.snapGrid.length; i++) {

                if (-currentPosition >= _this.snapGrid[i] && -currentPosition<_this.snapGrid[i+1]) {

                    newPosition = -_this.snapGrid[i+1]

                    break;

                }

            }

        }

        else {

            var groupSize = slideSize * params.slidesPerGroup;

            newPosition = -(Math.floor(Math.abs(currentPosition)/Math.floor(groupSize))*groupSize + groupSize);

        }

        if (newPosition < - maxWrapperPosition()) {

            newPosition = - maxWrapperPosition()

        };



        if (newPosition == currentPosition) return false;



        swipeToPosition(newPosition, 'next');

        return true

    }

    _this.swipePrev = function(internal){

        if (!internal && params.loop) _this.fixLoop();

        if (!internal && params.autoplay) _this.stopAutoplay();

        _this.callPlugins('onSwipePrev');



        var currentPosition = Math.ceil(_this.getWrapperTranslate());

        var newPosition;

        if (params.slidesPerView=='auto') {

            newPosition = 0;

            for (var i=1; i<_this.snapGrid.length; i++) {

                if (-currentPosition == _this.snapGrid[i]) {

                    newPosition = -_this.snapGrid[i-1]

                    break;

                }

                if (-currentPosition > _this.snapGrid[i] && -currentPosition<_this.snapGrid[i+1]) {

                    newPosition = -_this.snapGrid[i]

                    break;

                }

            }

        }

        else {

            var groupSize = slideSize * params.slidesPerGroup;

            newPosition = -(Math.ceil(-currentPosition/groupSize)-1)*groupSize;

        }



        if (newPosition > 0) newPosition = 0;



        if (newPosition == currentPosition) return false;

        swipeToPosition(newPosition, 'prev');

        return true;



    }

    _this.swipeReset = function(){

        _this.callPlugins('onSwipeReset');

        var currentPosition = _this.getWrapperTranslate();

        var groupSize = slideSize * params.slidesPerGroup;

        var newPosition;

        var maxPosition = -maxWrapperPosition();

        if (params.slidesPerView=='auto') {

            newPosition = 0;

            for (var i=0; i<_this.snapGrid.length; i++) {

                if (-currentPosition===_this.snapGrid[i]) return;

                if (-currentPosition >= _this.snapGrid[i] && -currentPosition<_this.snapGrid[i+1]) {

                    if(_this.positions.diff>0) newPosition = -_this.snapGrid[i+1]

                    else newPosition = -_this.snapGrid[i]

                    break;

                }

            }

            if (-currentPosition >= _this.snapGrid[_this.snapGrid.length-1]) newPosition = -_this.snapGrid[_this.snapGrid.length-1];

            if (currentPosition <= -maxWrapperPosition()) newPosition = -maxWrapperPosition()

        }

        else {

            newPosition = currentPosition<0 ? Math.round(currentPosition/groupSize)*groupSize : 0

        }

        if (params.scrollContainer)  {

            newPosition = currentPosition<0 ? currentPosition : 0;

        }

        if (newPosition < -maxWrapperPosition()) {

            newPosition = -maxWrapperPosition()

        }

        if (params.scrollContainer && (containerSize>slideSize)) {

            newPosition = 0;

        }



        if (newPosition == currentPosition) return false;



        swipeToPosition(newPosition, 'reset');

        return true;

    }

    

    _this.swipeTo = function(index, speed, runCallbacks) {

        index = parseInt(index, 10);

        _this.callPlugins('onSwipeTo', {index:index, speed:speed});

        if (params.loop) index = index + _this.loopedSlides;

        var currentPosition = _this.getWrapperTranslate();

        if (index > (_this.slides.length-1) || index < 0) return;

        var newPosition

        if (params.slidesPerView=='auto') {

            newPosition = -_this.slidesGrid[ index ];

        }

        else {

            newPosition =  -index*slideSize;

        }

        if (newPosition < - maxWrapperPosition()) {

            newPosition = - maxWrapperPosition();

        };



        if (newPosition == currentPosition) return false;



        runCallbacks = runCallbacks===false ? false : true;

        swipeToPosition(newPosition, 'to', {index:index, speed:speed, runCallbacks:runCallbacks});

        return true;

    }

    

    function swipeToPosition(newPosition, action, toOptions) {

    	var speed = (action=='to' && toOptions.speed >= 0) ? toOptions.speed : params.speed;

    	

        var timeOld = + new Date();

        if (_this.support.transitions || !params.DOMAnimation) {

            _this.setWrapperTranslate(newPosition);

            _this.setWrapperTransition(speed);

        }

        else {

            //Try the DOM animation

            var currentPosition = _this.getWrapperTranslate();

            var animationStep = Math.ceil( (newPosition - currentPosition)/speed*(1000/60) );

            var direction = currentPosition > newPosition ? 'toNext' : 'toPrev';

            var condition = direction=='toNext' ? currentPosition > newPosition : currentPosition < newPosition;

            if (_this._DOMAnimating) return;



            anim();

        }

        function anim(){

            var timeNew = + new Date();

            var time = timeNew - timeOld;

            currentPosition += animationStep * time / (1000/60);



            condition = direction=='toNext' ? currentPosition > newPosition : currentPosition < newPosition;

            if (condition) {

                _this.setWrapperTranslate(Math.round(currentPosition));

                _this._DOMAnimating = true

                window.setTimeout(function(){

                    anim()

                }, 1000 / 60)

            }

            else {

                if (params.onSlideChangeEnd) _this.fireCallback(params.onSlideChangeEnd, _this);

                _this.setWrapperTranslate(newPosition);

                _this._DOMAnimating = false;

            }

        }



        //Update Active Slide Index

        _this.updateActiveSlide(newPosition);



        //Callbacks

        if (params.onSlideNext && action=='next') {

            _this.fireCallback(params.onSlideNext, _this, newPosition);

        }

        if (params.onSlidePrev && action=='prev') {

            _this.fireCallback(params.onSlidePrev, _this, newPosition);

        }

        //"Reset" Callback

        if (params.onSlideReset && action=='reset') {

             _this.fireCallback(params.onSlideReset, _this, newPosition);

        }



        //"Next", "Prev" and "To" Callbacks

        if (action=='next' || action=='prev' || (action=='to' && toOptions.runCallbacks==true))

            slideChangeCallbacks(action);

    }

    /*==================================================

        Transition Callbacks

    ====================================================*/

    //Prevent Multiple Callbacks

    _this._queueStartCallbacks = false;

    _this._queueEndCallbacks = false;

    function slideChangeCallbacks(direction) {

        //Transition Start Callback

        _this.callPlugins('onSlideChangeStart');

        if (params.onSlideChangeStart) {

            if (params.queueStartCallbacks && _this.support.transitions) {

                if (_this._queueStartCallbacks) return;

                _this._queueStartCallbacks = true;

                _this.fireCallback(params.onSlideChangeStart, _this, direction)

                _this.wrapperTransitionEnd(function(){

                    _this._queueStartCallbacks = false;

                })

            }

            else _this.fireCallback(params.onSlideChangeStart, _this, direction)

        }

        //Transition End Callback

        if (params.onSlideChangeEnd) {

            if (_this.support.transitions) {

                if (params.queueEndCallbacks) {

                    if (_this._queueEndCallbacks) return;

                    _this._queueEndCallbacks = true;

                    _this.wrapperTransitionEnd(function(swiper){_this.fireCallback(params.onSlideChangeEnd, swiper, direction)})

                }

                else _this.wrapperTransitionEnd(function(swiper){_this.fireCallback(params.onSlideChangeEnd, swiper, direction)})

            }

            else {

                if (!params.DOMAnimation) {

                    setTimeout(function(){

                       _this.fireCallback(params.onSlideChangeStart, _this, direction)

                    },10)

                }

            }

        }

    }

    

    /*==================================================

        Update Active Slide Index

    ====================================================*/

    _this.updateActiveSlide = function(position) {

        if (!_this.initialized) return;

        if (_this.slides.length==0) return;

        _this.previousIndex = _this.activeIndex;

        if (typeof position=='undefined') position = _this.getWrapperTranslate();

        if (position>0) position=0;

        

        if (params.slidesPerView == 'auto') {

            var slidesOffset = 0;

            _this.activeIndex = _this.slidesGrid.indexOf(-position);

            if (_this.activeIndex<0) {

                for (var i=0; i<_this.slidesGrid.length-1; i++) {

                    if (-position>_this.slidesGrid[i] && -position<_this.slidesGrid[i+1]) {

                        break;

                    }

                }

                var leftDistance = Math.abs( _this.slidesGrid[i] + position )

                var rightDistance = Math.abs( _this.slidesGrid[i+1] + position )

                if (leftDistance<=rightDistance) _this.activeIndex = i;

                else _this.activeIndex = i+1;

            }

        }

        else {

        	_this.activeIndex = Math[params.visibilityFullFit ? 'ceil' : 'round']( -position/slideSize );

        }

        

        if (_this.activeIndex == _this.slides.length ) _this.activeIndex = _this.slides.length - 1;

        if (_this.activeIndex < 0) _this.activeIndex = 0;

        

        // Check for slide

        if (!_this.slides[_this.activeIndex]) return;

        

        // Calc Visible slides

        _this.calcVisibleSlides(position);



        // Mark visible and active slides with additonal classes

        var activeClassRegexp = new RegExp( "\\s*" + params.slideActiveClass );

        var inViewClassRegexp = new RegExp( "\\s*" + params.slideVisibleClass );



        for (var i = 0; i < _this.slides.length; i++) {

            _this.slides[ i ].className = _this.slides[ i ].className.replace( activeClassRegexp, '' ).replace( inViewClassRegexp, '' );

            if ( _this.visibleSlides.indexOf( _this.slides[ i ] )>=0 ) {

                _this.slides[ i ].className += ' ' + params.slideVisibleClass;

            }



        }

        _this.slides[ _this.activeIndex ].className += ' ' + params.slideActiveClass;



        //Update loop index

        if (params.loop) {

            var ls = _this.loopedSlides;

            _this.activeLoopIndex = _this.activeIndex - ls;

            if (_this.activeLoopIndex >= _this.slides.length - ls*2 ) {

                _this.activeLoopIndex = _this.slides.length - ls*2 - _this.activeLoopIndex;

            }

            if (_this.activeLoopIndex<0) {

                _this.activeLoopIndex = _this.slides.length - ls*2 + _this.activeLoopIndex;

            }

        }

        else {

            _this.activeLoopIndex = _this.activeIndex;

        }

        //Update Pagination

        if (params.pagination) {

            _this.updatePagination(position);

        }

    }

    /*==================================================

        Pagination

    ====================================================*/

    _this.createPagination = function (firstInit) {

        if (params.paginationClickable && _this.paginationButtons) {

            removePaginationEvents();

        }

        var paginationHTML = "";

        var numOfSlides = _this.slides.length;

        var numOfButtons = numOfSlides;

        if (params.loop) numOfButtons -= _this.loopedSlides*2

        for (var i = 0; i < numOfButtons; i++) {

            paginationHTML += '<'+params.paginationElement+' class="'+params.paginationElementClass+'"></'+params.paginationElement+'>'

        }

        _this.paginationContainer = params.pagination.nodeType ? params.pagination : $$(params.pagination)[0];

        _this.paginationContainer.innerHTML = paginationHTML;

        _this.paginationButtons = $$('.'+params.paginationElementClass, _this.paginationContainer);

        if (!firstInit) _this.updatePagination()

        _this.callPlugins('onCreatePagination');

        if (params.paginationClickable) {

            addPaginationEvents();

        }

    }

    function removePaginationEvents() {

        var pagers = _this.paginationButtons;

        for (var i=0; i<pagers.length; i++) {

            _this.h.removeEventListener(pagers[i], 'click', paginationClick);

        }

    }

    function addPaginationEvents() {

        var pagers = _this.paginationButtons;

        for (var i=0; i<pagers.length; i++) {

            _this.h.addEventListener(pagers[i], 'click', paginationClick);

        }

    }

    function paginationClick(e){

        var index;

        var target = e.target || e.srcElement;

        var pagers = _this.paginationButtons;

        for (var i=0; i<pagers.length; i++) {

            if (target===pagers[i]) index = i;

        }

        _this.swipeTo(index)

    }

    _this.updatePagination = function(position) {

        if (!params.pagination) return;

        if (_this.slides.length<1) return;



        var activePagers = $$('.'+params.paginationActiveClass, _this.paginationContainer);

        if(!activePagers) return;



        //Reset all Buttons' class to not active

        var pagers = _this.paginationButtons;

        if (pagers.length==0) return;

        for (var i=0; i < pagers.length; i++) {

            pagers[i].className = params.paginationElementClass

        }



        var indexOffset = params.loop ? _this.loopedSlides : 0;

        if (params.paginationAsRange) {

            if (!_this.visibleSlides) _this.calcVisibleSlides(position)

            //Get Visible Indexes

            var visibleIndexes = [];

            for (var i = 0; i < _this.visibleSlides.length; i++) {

                var visIndex = _this.slides.indexOf( _this.visibleSlides[i] ) - indexOffset



                if (params.loop && visIndex<0) {

                    visIndex = _this.slides.length - _this.loopedSlides*2 + visIndex;

                }

                if (params.loop && visIndex>=_this.slides.length-_this.loopedSlides*2) {

                    visIndex = _this.slides.length - _this.loopedSlides*2 - visIndex;

                    visIndex = Math.abs(visIndex)

                }

                visibleIndexes.push( visIndex )

            }

            

            for (i=0; i<visibleIndexes.length; i++) {

                if (pagers[ visibleIndexes[i] ]) pagers[ visibleIndexes[i] ].className += ' ' + params.paginationVisibleClass;

            }

            

            if (params.loop) {

                pagers[ _this.activeLoopIndex ].className += ' ' + params.paginationActiveClass;

            }

            else {

                pagers[ _this.activeIndex ].className += ' ' + params.paginationActiveClass;

            }

            

        }

        else {

            if (params.loop) {

                pagers[ _this.activeLoopIndex ].className+=' '+params.paginationActiveClass+' '+params.paginationVisibleClass;

            }

            else {

                pagers[ _this.activeIndex ].className+=' '+params.paginationActiveClass+' '+params.paginationVisibleClass;

            }



        }



    }

    _this.calcVisibleSlides = function(position){

        var visibleSlides = [];

        var _slideLeft = 0, _slideSize = 0, _slideRight = 0;

        if (isH && _this.wrapperLeft>0) position = position+_this.wrapperLeft;

        if (!isH && _this.wrapperTop>0) position = position+_this.wrapperTop;



        for (var i=0; i<_this.slides.length; i++) {

            _slideLeft += _slideSize;

            if (params.slidesPerView == 'auto')

                _slideSize  = isH ? _this.h.getWidth(_this.slides[i],true) : _this.h.getHeight(_this.slides[i],true);

            else _slideSize = slideSize;



            _slideRight = _slideLeft + _slideSize;

            var isVisibile = false;

            if (params.visibilityFullFit) {

                if (_slideLeft >= -position && _slideRight <= -position+containerSize) isVisibile = true;

                if (_slideLeft <= -position && _slideRight >= -position+containerSize) isVisibile = true;

            }

            else {



                if (_slideRight > -position && _slideRight <= ((-position+containerSize))) isVisibile = true;

                if (_slideLeft >= -position && _slideLeft < ((-position+containerSize))) isVisibile = true;

                if (_slideLeft < -position && _slideRight > ((-position+containerSize))) isVisibile = true;

            }



            if (isVisibile) visibleSlides.push(_this.slides[i])



        }

        if (visibleSlides.length==0) visibleSlides = [ _this.slides[ _this.activeIndex ] ]



        _this.visibleSlides = visibleSlides;

    }



    /*==========================================

        Autoplay

    ============================================*/

    _this.autoPlayIntervalId = undefined;

    _this.startAutoplay = function () {

        if (typeof _this.autoPlayIntervalId !== 'undefined') return false;

        if (params.autoplay && !params.loop) {

            _this.autoPlayIntervalId = setInterval(function(){

                if (!_this.swipeNext(true)) _this.swipeTo(0);

            }, params.autoplay)

        }

        if (params.autoplay && params.loop) {

            _this.autoPlayIntervalId = setInterval(function(){

                _this.swipeNext();

            }, params.autoplay)

        }

        _this.callPlugins('onAutoplayStart');

    }

    _this.stopAutoplay = function () {

        if (_this.autoPlayIntervalId) clearInterval(_this.autoPlayIntervalId);

        _this.autoPlayIntervalId = undefined;

        _this.callPlugins('onAutoplayStop');

    }

    

    /*==================================================

        Loop

    ====================================================*/

    _this.loopCreated = false;

    _this.removeLoopedSlides = function(){

        if (_this.loopCreated) {

            for (var i=0; i<_this.slides.length; i++) {

                if (_this.slides[i].getData('looped')===true) _this.wrapper.removeChild(_this.slides[i]);

            }

        }

    }

    

    _this.createLoop = function() {

        if (_this.slides.length==0) return;

        

        _this.loopedSlides = params.slidesPerView + params.loopAdditionalSlides;

        if (_this.loopedSlides > _this.slides.length) {

			_this.loopedSlides = _this.slides.length;

        }

        

        var slideFirstHTML = '',

        	slideLastHTML = '',

        	i;



        //Grab First Slides

        for (i=0; i<_this.loopedSlides; i++) {

            slideFirstHTML += _this.slides[i].outerHTML;

        }

        //Grab Last Slides

        for (i=_this.slides.length-_this.loopedSlides; i<_this.slides.length; i++) {

            slideLastHTML += _this.slides[i].outerHTML;

        }

        wrapper.innerHTML = slideLastHTML + wrapper.innerHTML + slideFirstHTML;



        _this.loopCreated = true;

        _this.calcSlides();



        //Update Looped Slides with special class

        for (i=0; i<_this.slides.length; i++) {

            if (i<_this.loopedSlides || i>=_this.slides.length-_this.loopedSlides) _this.slides[i].setData('looped', true);

        }

        _this.callPlugins('onCreateLoop');



    }

    

    _this.fixLoop = function() {

    	

    	if(_this.params.loop == true) {

    		

	    	var newIndex;

	        //Fix For Negative Oversliding

	        if (_this.activeIndex < _this.loopedSlides) {

	            newIndex = _this.slides.length - _this.loopedSlides*3 + _this.activeIndex;

	            _this.swipeTo(newIndex, 0, false);

	        }

	        //Fix For Positive Oversliding

	        else if (_this.activeIndex > _this.slides.length - params.slidesPerView*2) {

	            newIndex = -_this.slides.length + _this.activeIndex + _this.loopedSlides

	            _this.swipeTo(newIndex, 0, false);

	        }

       }

       

    }

    

    /*==================================================

        Slides Loader

    ====================================================*/

    _this.loadSlides = function(){

        var slidesHTML = '';

        _this.activeLoaderIndex = 0;

        var slides = params.loader.slides;

        var slidesToLoad = params.loader.loadAllSlides ? slides.length : params.slidesPerView*(1+params.loader.surroundGroups);

        for (var i=0; i< slidesToLoad; i++) {

            if (params.loader.slidesHTMLType=='outer') slidesHTML+=slides[i];

            else {

                slidesHTML+='<'+params.slideElement+' class="'+params.slideClass+'" data-swiperindex="'+i+'">'+slides[i]+'</'+params.slideElement+'>';

            }

        }

        _this.wrapper.innerHTML = slidesHTML;

        _this.calcSlides(true);

        //Add permanent transitionEnd callback

        if (!params.loader.loadAllSlides) {

            _this.wrapperTransitionEnd(_this.reloadSlides, true);

        }

    }

    

    _this.reloadSlides = function(){

        var slides = params.loader.slides;

        var newActiveIndex = parseInt(_this.activeSlide().data('swiperindex'),10)

        if (newActiveIndex<0 || newActiveIndex>slides.length-1) return //<-- Exit

        _this.activeLoaderIndex = newActiveIndex;

        var firstIndex = Math.max(0, newActiveIndex - params.slidesPerView*params.loader.surroundGroups)

        var lastIndex = Math.min(newActiveIndex+params.slidesPerView*(1+params.loader.surroundGroups)-1, slides.length-1)

        //Update Transforms

        if (newActiveIndex>0) {

            var newTransform = -slideSize*(newActiveIndex-firstIndex)

            _this.setWrapperTranslate(newTransform);

            _this.setWrapperTransition(0);

        }

        //New Slides

        if (params.loader.logic==='reload') {

            _this.wrapper.innerHTML = '';

            var slidesHTML = '';

            for (var i = firstIndex; i<=lastIndex; i++) {

                slidesHTML += params.loader.slidesHTMLType == 'outer' ? slides[i] : '<'+params.slideElement+' class="'+params.slideClass+'" data-swiperindex="'+i+'">'+slides[i]+'</'+params.slideElement+'>';

            }

            _this.wrapper.innerHTML = slidesHTML;

        }

        else {

            var minExistIndex=1000;

            var maxExistIndex=0;

            for (var i=0; i<_this.slides.length; i++) {

                var index = _this.slides[i].data('swiperindex');

                if (index<firstIndex || index>lastIndex) {

                    _this.wrapper.removeChild(_this.slides[i]);

                }

                else {

                    minExistIndex = Math.min(index, minExistIndex)

                    maxExistIndex = Math.max(index, maxExistIndex)

                }

            }

            for (var i=firstIndex; i<=lastIndex; i++) {

                if (i<minExistIndex) {

                    var newSlide = document.createElement(params.slideElement);

                    newSlide.className = params.slideClass;

                    newSlide.setAttribute('data-swiperindex',i);

                    newSlide.innerHTML = slides[i];

                    _this.wrapper.insertBefore(newSlide, _this.wrapper.firstChild);

                }

                if (i>maxExistIndex) {

                    var newSlide = document.createElement(params.slideElement);

                    newSlide.className = params.slideClass;

                    newSlide.setAttribute('data-swiperindex',i);

                    newSlide.innerHTML = slides[i];

                    _this.wrapper.appendChild(newSlide);

                }

            }

        }

        //reInit

        _this.reInit(true);

    }

    

    /*==================================================

        Make Swiper

    ====================================================*/

    function makeSwiper(){

        _this.calcSlides();

        if (params.loader.slides.length>0 && _this.slides.length==0) {

            _this.loadSlides();

        }

        if (params.loop) {

            _this.createLoop();

        }

        _this.init();

        initEvents();

        if (params.pagination && params.createPagination) {

            _this.createPagination(true);

        }

        if (params.loop || params.initialSlide>0) {

            _this.swipeTo( params.initialSlide, 0, false );

        }

        else {

            _this.updateActiveSlide(0);

        }

        if (params.autoplay) {

            _this.startAutoplay();

        }



    }

    

    makeSwiper();

}



Swiper.prototype = {

    plugins : {},

    

    /*==================================================

        Wrapper Operations

    ====================================================*/

    wrapperTransitionEnd : function(callback, permanent) {

        var a = this,

        	el = a.wrapper,

        	events = ['webkitTransitionEnd', 'transitionend', 'oTransitionEnd', 'MSTransitionEnd', 'msTransitionEnd'],

        	i;

        

        function fireCallBack() {

            callback(a);

            if (a.params.queueEndCallbacks) a._queueEndCallbacks = false;

            if (!permanent) {

                for (i=0; i<events.length; i++) {

                    a.h.removeEventListener(el, events[i], fireCallBack);

                }

            }

        }

        

        if (callback) {

            for (i=0; i<events.length; i++) {

                a.h.addEventListener(el, events[i], fireCallBack);

            }

        }

    },



    getWrapperTranslate : function (axis) {

        var el = this.wrapper,

        	matrix, curTransform, curStyle, transformMatrix;

        

        // automatic axis detection

        if (typeof axis == 'undefined') {

			axis = this.params.mode == 'horizontal' ? 'x' : 'y';

        }

        

       curStyle = window.getComputedStyle(el, null);



            if (window.WebKitCSSMatrix) {

                transformMatrix = new WebKitCSSMatrix(curStyle.webkitTransform);

            }



            else {

                transformMatrix = curStyle.MozTransform || curStyle.OTransform || curStyle.MsTransform || curStyle.msTransform  || curStyle.transform || curStyle.getPropertyValue("transform").replace("translate(", "matrix(1, 0, 0, 1,");

                matrix = transformMatrix.toString().split(',');

            }

        

        if (this.support.transforms && this.params.useCSS3Transforms) {

            if (axis=='x') {

            	//Latest Chrome and webkits Fix

                if (window.WebKitCSSMatrix)

                    curTransform = transformMatrix.m41;

                //Crazy IE10 Matrix

                else if (matrix.length==16)

                    curTransform = parseFloat( matrix[12] );

                //Normal Browsers

                else

                    curTransform = parseFloat( matrix[4] );

            }

            if (axis=='y') {

            	//Latest Chrome and webkits Fix

                if (window.WebKitCSSMatrix)

                    curTransform = transformMatrix.m42;

                //Crazy IE10 Matrix

                else if (matrix.length==16)

                    curTransform = parseFloat( matrix[13] );

                //Normal Browsers

                else

                    curTransform = parseFloat( matrix[5] );

            }

        }

        else {

            if (axis=='x') curTransform = parseFloat(el.style.left,10) || 0;

            if (axis=='y') curTransform = parseFloat(el.style.top,10) || 0;

        }

        return curTransform || 0;

    },



    setWrapperTranslate : function (x, y, z) {

        var es = this.wrapper.style,

        	coords = {x: 0, y: 0, z: 0},

        	translate;



        // passed all coordinates

        if (arguments.length == 3) {

			coords.x = x;

			coords.y = y;

			coords.z = z;

        }

        

        // passed one coordinate and optional axis

        else {

        	if (typeof y == 'undefined') {

				y = this.params.mode == 'horizontal' ? 'x' : 'y';

        	}

        	coords[y] = x;

        }



        if (this.support.transforms && this.params.useCSS3Transforms) {

        	translate = this.support.transforms3d ? 'translate3d(' + coords.x + 'px, ' + coords.y + 'px, ' + coords.z + 'px)' : 'translate(' + coords.x + 'px, ' + coords.y + 'px)';

            es.webkitTransform = es.MsTransform = es.msTransform = es.MozTransform = es.OTransform = es.transform = translate;

        }

        else {

            es.left = coords.x + 'px';

            es.top  = coords.y + 'px';

        }

        this.callPlugins('onSetWrapperTransform', coords);

        if (this.params.onSetWrapperTransform) this.fireCallback(this.params.onSetWrapperTransform, this, coords);

    },



    setWrapperTransition : function (duration) {

        var es = this.wrapper.style;

        es.webkitTransitionDuration = es.MsTransitionDuration = es.msTransitionDuration = es.MozTransitionDuration = es.OTransitionDuration = es.transitionDuration = (duration / 1000) + 's';

        this.callPlugins('onSetWrapperTransition', {duration: duration});

        if (this.params.onSetWrapperTransition) this.fireCallback(this.params.onSetWrapperTransition, this, duration);

    },



    /*==================================================

        Helpers

    ====================================================*/

    h : {

        getWidth: function (el, outer) {

            var width = window.getComputedStyle(el, null).getPropertyValue('width')

            var returnWidth = parseFloat(width);

            //IE Fixes

            if(isNaN(returnWidth) || width.indexOf('%')>0) {

                returnWidth = el.offsetWidth - parseFloat(window.getComputedStyle(el, null).getPropertyValue('padding-left')) - parseFloat(window.getComputedStyle(el, null).getPropertyValue('padding-right'));

            }

            if (outer) returnWidth += parseFloat(window.getComputedStyle(el, null).getPropertyValue('padding-left')) + parseFloat(window.getComputedStyle(el, null).getPropertyValue('padding-right'))



            return returnWidth;

        },

        getHeight: function(el, outer) {

            if (outer) return el.offsetHeight;



            var height = window.getComputedStyle(el, null).getPropertyValue('height')

            var returnHeight = parseFloat(height);

            //IE Fixes

            if(isNaN(returnHeight) || height.indexOf('%')>0) {

                returnHeight = el.offsetHeight - parseFloat(window.getComputedStyle(el, null).getPropertyValue('padding-top')) - parseFloat(window.getComputedStyle(el, null).getPropertyValue('padding-bottom'));

            }

            if (outer) returnHeight += parseFloat(window.getComputedStyle(el, null).getPropertyValue('padding-top')) + parseFloat(window.getComputedStyle(el, null).getPropertyValue('padding-bottom'))

            return returnHeight;

        },

        getOffset: function(el) {

            var box = el.getBoundingClientRect();

            var body = document.body;

            var clientTop  = el.clientTop  || body.clientTop  || 0;

            var clientLeft = el.clientLeft || body.clientLeft || 0;

            var scrollTop  = window.pageYOffset || el.scrollTop;

            var scrollLeft = window.pageXOffset || el.scrollLeft;

            if (document.documentElement && !window.pageYOffset) {

                //IE7-8

                scrollTop  = document.documentElement.scrollTop;

                scrollLeft = document.documentElement.scrollLeft;

            }

            return {

                top: box.top  + scrollTop  - clientTop,

                left: box.left + scrollLeft - clientLeft

            };

        },

        windowWidth : function() {

            if (window.innerWidth) return window.innerWidth

            else if (document.documentElement && document.documentElement.clientWidth) return document.documentElement.clientWidth;

        },

        windowHeight : function() {

            if (window.innerHeight) return window.innerHeight

            else if (document.documentElement && document.documentElement.clientHeight) return document.documentElement.clientHeight;

        },

        windowScroll : function() {

            var left=0, top=0;

            if (typeof pageYOffset != 'undefined') {

                return {

                    left: window.pageXOffset,

                    top: window.pageYOffset

                }

            }

            else if (document.documentElement) {

                return {

                    left: document.documentElement.scrollLeft,

                    top: document.documentElement.scrollTop

                }

            }

        },



        addEventListener : function (el, event, listener, useCapture) {

        	if (typeof useCapture == 'undefined') {

				useCapture = false;

        	}

        	

            if (el.addEventListener) {

                el.addEventListener(event, listener, useCapture);

            }

            else if (el.attachEvent) {

                el.attachEvent('on' + event, listener);

            }

        },

        

        removeEventListener : function (el, event, listener, useCapture) {

        	if (typeof useCapture == 'undefined') {

				useCapture = false;

        	}

        	

            if (el.removeEventListener) {

                el.removeEventListener(event, listener, useCapture);

            }

            else if (el.detachEvent) {

                el.detachEvent('on' + event, listener);

            }

        }

    },

    setTransform : function (el, transform) {

        var es = el.style

        es.webkitTransform = es.MsTransform = es.msTransform = es.MozTransform = es.OTransform = es.transform = transform

    },

    setTranslate : function (el, translate) {

        var es = el.style

        var pos = {

            x : translate.x || 0,

            y : translate.y || 0,

            z : translate.z || 0

        };

        var transformString = this.support.transforms3d ? 'translate3d('+(pos.x)+'px,'+(pos.y)+'px,'+(pos.z)+'px)' : 'translate('+(pos.x)+'px,'+(pos.y)+'px)';

        es.webkitTransform = es.MsTransform = es.msTransform = es.MozTransform = es.OTransform = es.transform = transformString;

        if (!this.support.transforms) {

            es.left = pos.x+'px'

            es.top = pos.y+'px'

        }

    },

    setTransition : function (el, duration) {

        var es = el.style

        es.webkitTransitionDuration = es.MsTransitionDuration = es.msTransitionDuration = es.MozTransitionDuration = es.OTransitionDuration = es.transitionDuration = duration+'ms';

    },

    /*==================================================

        Feature Detection

    ====================================================*/

    support: {



        touch : (window.Modernizr && Modernizr.touch===true) || (function() {

            return !!(("ontouchstart" in window) || window.DocumentTouch && document instanceof DocumentTouch);

        })(),



        transforms3d : (window.Modernizr && Modernizr.csstransforms3d===true) || (function() {

            var div = document.createElement('div').style;

            return ("webkitPerspective" in div || "MozPerspective" in div || "OPerspective" in div || "MsPerspective" in div || "perspective" in div);

        })(),



        transforms : (window.Modernizr && Modernizr.csstransforms===true) || (function(){

            var div = document.createElement('div').style;

            return ('transform' in div || 'WebkitTransform' in div || 'MozTransform' in div || 'msTransform' in div || 'MsTransform' in div || 'OTransform' in div);

        })(),



        transitions : (window.Modernizr && Modernizr.csstransitions===true) || (function(){

            var div = document.createElement('div').style;

            return ('transition' in div || 'WebkitTransition' in div || 'MozTransition' in div || 'msTransition' in div || 'MsTransition' in div || 'OTransition' in div);

        })()

    },



    browser : {



        ie8 : (function(){

            var rv = -1; // Return value assumes failure.

            if (navigator.appName == 'Microsoft Internet Explorer') {

                var ua = navigator.userAgent;

                var re = new RegExp("MSIE ([0-9]{1,}[\.0-9]{0,})");

                if (re.exec(ua) != null)

                    rv = parseFloat(RegExp.$1);

            }

            return rv != -1 && rv < 9;

        })(),



        ie10 : window.navigator.msPointerEnabled

    }

}



/*=========================

  jQuery & Zepto Plugins

  ===========================*/

if (window.jQuery||window.Zepto) {

    (function($){

        if(!jQuery().swiper) {

            $.fn.swiper = function(params) {

                var s = new Swiper($(this)[0], params)

                $(this).data('swiper',s);

                return s;

            }

        }

    })(window.jQuery||window.Zepto)

}



// component

if ( typeof( module ) !== 'undefined' )

{

    module.exports = Swiper;

}











}









/*

 * Swiper Smooth Progress 1.1.0

 * Smooth progress plugin for Swiper

 *

 * http://www.idangero.us/sliders/swiper/plugins/progress.php

 *

 * Copyright 2010-2014, Vladimir Kharlampidi

 * The iDangero.us

 * http://www.idangero.us/

 *

 * Licensed under GPL & MIT

 *

 * Released on: January 29, 2014

*/

Swiper.prototype.plugins.progress=function(a){function b(){for(var b=0;b<a.slides.length;b++){var c=a.slides[b];c.progressSlideSize=e?a.h.getWidth(c):a.h.getHeight(c),c.progressSlideOffset="offsetLeft"in c?e?c.offsetLeft:c.offsetTop:e?c.getOffset().left-a.h.getOffset(a.container).left:c.getOffset().top-a.h.getOffset(a.container).top}d=e?a.h.getWidth(a.wrapper)+a.wrapperLeft+a.wrapperRight-a.width:a.h.getHeight(a.wrapper)+a.wrapperTop+a.wrapperBottom-a.height}function c(b){var c,b=b||{x:0,y:0,z:0};c=1==a.params.centeredSlides?e?-b.x+a.width/2:-b.y+a.height/2:e?-b.x:-b.y;for(var f=0;f<a.slides.length;f++){var g=a.slides[f],h=1==a.params.centeredSlides?g.progressSlideSize/2:0,i=(c-g.progressSlideOffset-h)/g.progressSlideSize;g.progress=i}a.progress=e?-b.x/d:-b.y/d,a.params.onProgressChange&&a.fireCallback(a.params.onProgressChange,a)}var d,e="horizontal"==a.params.mode,f={onFirstInit:function(){b(),c({x:a.getWrapperTranslate("x"),y:a.getWrapperTranslate("y")})},onInit:function(){b()},onSetWrapperTransform:function(a){c(a)}};return f};









 

 

 

jQuery(document).ready(function($){ 



    Array.prototype.getKeyByValue = function( value ) {

        for( var prop in this ) {

            if( this.hasOwnProperty( prop ) ) {

                 if( this[ prop ] === value )

                     return prop;

            }

        }

    }



	var doneVideoInit = false;

	var $captionTrans = 0;

	var $loading_bg_storage = $('.first-section .nectar-slider-loading').css('background-image');

    

    function transparentheaderLoadingCalcs() {

    	//handle slider loading pos when trasparent header is being used

    	if($('body #header-outer[data-transparent-header="true"]').length > 0) {



    		if($('#page-header-bg').length == 0) {

    			

    			$('.nectar-slider-wrap.first-section .swiper-container .swiper-wrapper .swiper-slide').addClass('not-loaded');

    			

    			if($('.container-wrap .main-content > .row > div').find('.nectar-slider-wrap.first-section').length > 0) {

    				$('.container-wrap .main-content > .row > div').first().css('padding-top','0');

    			}

    			

    			

    			$('body #header-outer[data-transparent-header="true"] .ns-loading-cover').show();

    			

    			//if not using flexible/fullscreen height - calculate the loading / bg pos early (if using the option calculates later)

    			if($('.first-section .nectar-slider-wrap[data-flexible-height="true"]').length == 0 && $('.first-section .nectar-slider-wrap[data-fullscreen="true"]').length == 0) {

    				$('.first-section .nectar-slider-loading').css({

    					'top': $('#header-space').height(),

    					'background-position' : 'center ' + ((($('.first-section .swiper-container').height()/2) + 15) - $('#header-space').height()) +'px'

    				});



                    $('.first-section .nectar-slider-wrap .nectar-slider-loading .loading-icon').css({

                        'opacity' : '1',

                        'height' :  $('.first-section .swiper-container').height() - $('#header-space').height() + 'px'

                    });

    			} else {

    				var $loading_bg_storage = $('.first-section .nectar-slider-loading').css('background-image');

    				

    				$('.first-section .nectar-slider-loading').css({

    					'top': $('#header-space').height(),

    					'background-image': 'none'

    				});

    			}

    			

    		}

    	}

    }

    transparentheaderLoadingCalcs();

	

	//move parallax sliders to correct dom location  

	var parallaxSlider = $('.parallax_slider_outer.first-section');



    //ajaxify

    $(window).on("pronto.request", function(){ 



        //remove window resize events

        $(window).off('resize.nsSliderContent');

        $(window).off('resize.dynamicHeights');

        $(window).off('resize.nsHeightUpdate');



        //clear all autoplay intervals

        $('.nectar-slider-wrap').each(function(){

            if($(this).attr('data-autorotate') && $(this).attr('data-autorotate').length > 1) {



                var $autoplayVal = $('#'+$(this).attr('id')).attr('data-autorotate');

                if(typeof $autoplayVal !='undefined' && $autoplayVal.length != '0' && parseInt($autoplayVal)) {

                    clearInterval(autoplay[$('#'+$(this).attr('id')).attr('autoplay-id')]); 

                } 



            }

        });

        

    });



    $(window).on("pronto.render", function(){ 



        if($('.nectar-slider-wrap').length > 0){



            $(window).on('resize.nsSliderContent', nsSliderContentResize);



            parallaxSlider = $('.parallax_slider_outer.first-section'); 

            $(window).unbind('resize.nsHeightUpdate');





            transparentheaderLoadingCalcs();



            ////remove parallax if using page header on projects/posts

            if($('body.single #page-header-bg').length > 0) $('.parallax_slider_outer').removeClass('parallax_slider_outer').addClass('no-left-margin');

            parallaxSliderPos();



            nectarSliderMainInit();

            setTimeout(function(){ 

                initialSlideLoad();

                dynamicHeightSliders();

                $(window).on('resize.dynamicHeights', dynamicHeightSliders);

                sliderSize();

                resizeToCover();

                autorotateInit();

                parallaxCheck();

                sliderbuttonHoverEffect();

            },150);





        }



    }); //pronto render



	function parallaxSliderPos(){

		if(parallaxSlider.parent().attr('class') == 'wpb_wrapper') { 



            //give the slider the custom row ID if assigned

            if(parallaxSlider.parents('.wpb_row').length > 0) {

                if(parallaxSlider.parents('.wpb_row').not('[id^="fws_"]').length > 0) parallaxSlider.attr('id',parallaxSlider.parents('.wpb_row').attr('id'));

            } 

            //remove the row

            parallaxSlider.parents('.wpb_row').remove(); 

        }

        //alter the DOM pos

		parallaxSlider.insertBefore('.container-wrap');	

        

	}

	

	////remove parallax if using page header on projects/posts

	if($('body.single #page-header-bg').length > 0) $('.parallax_slider_outer').removeClass('parallax_slider_outer').addClass('no-left-margin');

	

	parallaxSliderPos();

	

	//initial cals

	var $smoothSrollWidth = ($('body').attr('data-smooth-scrolling') == '1') ? 0 : 0; 





	

	

	/*=========================

     Begin Nectar Slider Main Construction

     ===========================*/

	var $nectarSliders = [];

	

    function nectarSliderMainInit() { 



        $nectarSliders = [];



        //remove boxed full width attr when not needed

        $('.nectar-slider-wrap[data-full-width="boxed-full-width"]').each(function(){ if($(this).parents('.wpb_column').length > 0 && $(this).parents('.full-width-content').length > 0) $(this).attr('data-full-width','false') });

        

        if($('body > #boxed').length == 0 && $('.nectar-slider-wrap[data-full-width="true"]').parent().attr('id') != 'portfolio-extra' && $('.nectar-slider-wrap[data-full-width="true"]').parents('#post-area:not(".span_12")').length == 0){ 

            $('.nectar-slider-wrap[data-full-width="true"], .parallax_slider_outer.first-section .nectar-slider-wrap').css('left', -(($(window).width()-$smoothSrollWidth)/2 - $('.main-content').width()/2))+'px';

            $('.nectar-slider-wrap[data-full-width="true"] .swiper-container, .nectar-slider-wrap[data-full-width="true"], .parallax_slider_outer.first-section .swiper-container, .parallax_slider_outer.first-section .nectar-slider-wrap').css('width',$(window).width());

        } 

        else if( $('.nectar-slider-wrap[data-full-width="true"]').parent().attr('id') == 'portfolio-extra' && $('#full_width_portfolio').length != 0){  

            $('.nectar-slider-wrap[data-full-width="true"], .parallax_slider_outer.first-section .nectar-slider-wrap').css('left', -(($(window).width()-$smoothSrollWidth)/2 - $('.main-content').width()/2))+'px';

            $('.nectar-slider-wrap[data-full-width="true"] .swiper-container, .nectar-slider-wrap[data-full-width="true"], .parallax_slider_outer.first-section .swiper-container, .parallax_slider_outer.first-section .nectar-slider-wrap').css('width',$(window).width());

        }

        else { 

            var $container = ($('body > #boxed').length == 0) ? '#post-area' : '.container-wrap';

            //backup incase only slider is used with nothing else in boxed mode

            if($($container).width() == '0' && $('body > #boxed').length > 0) $container = '#boxed';

            $('.nectar-slider-wrap[data-full-width="true"] .swiper-container, .nectar-slider-wrap[data-full-width="true"], .parallax_slider_outer.first-section .swiper-container, .parallax_slider_outer.first-section .nectar-slider-wrap').css('width',$($container).width());

        }

        

        //show slider once full width calcs have taken place

        $('.nectar-slider-wrap').show();

        

        //set bg colors / textures after js has made the slider fullwidth

        $('.swiper-container, .swiper-slide').css('background-color','#000');

        $('.video-texture').css('opacity','1');







    	$('.nectar-slider-wrap').each(function(i){

    		var $arrows = $(this).find('.swiper-container').attr('data-arrows');

    		var $bullets = $(this).find('.swiper-container').attr('data-bullets');

    		var $swipe = $(this).find('.swiper-container').attr('data-desktop-swipe');

    		var $loop = $(this).find('.swiper-container').attr('data-loop');

    		

    		//swipe  

    		if($swipe == 'true' && $('#'+$(this).attr('id') +' .swiper-wrapper > div').length > 1 ){

    			var $grab = 1;

    			var $desktopSwipe = 1;

    		} else {

    			var $grab = 0;

    			var $desktopSwipe = 0;

    		}



            ////set swipe as true for mobile

            if($('body').hasClass('mobile')) $desktopSwipe = 1;



    		//bullets

    		if($bullets == 'true' && $(this).find('.swiper-wrapper > div').length > 1){

    			$bullets = '#'+$(this).attr('id')+' .slider-pagination';

    		} else {

    			$bullets = null;

    		}



            //loop

            $useLoop = ($loop == 'true' && $(this).find('.swiper-wrapper > div').length > 1 && !$('html').hasClass('no-video')) ? true : false;

            if($useLoop == false) $(this).find('.swiper-container').attr('data-loop','false');



            //obj config



            if($(this).attr('data-transition') == 'fade'){

                    

                   var progressVar = true;

                   var touchRatio = 1.3;



                    $sliderOptions = {

                        loop: $useLoop,

                        grabCursor: $grab,

                        touchRatio: touchRatio,

                        speed: 900,

                        pagination : $bullets,

                        simulateTouch: $desktopSwipe,

                        onSlideChangeEnd: captionTransition,

                        onTouchEnd: captionTransition,

                        onSlideChangeStart: sliderArrowCount,

                        onTouchMove: clearAutoplay,

                        onFirstInit: nectarInit,

                        progress: progressVar,

                        onProgressChange: function(swiper){

                            for (var i = 0; i < swiper.slides.length; i++){

                              var slide = swiper.slides[i];

                              var progress = slide.progress;

                              var translate = progress*swiper.width;  

                              var opacity = 1 - Math.min(Math.abs(progress),1);

                              slide.style.opacity = opacity;

                              swiper.setTransform(slide,'translate3d('+translate+'px,0,0)');

                            }

                        },

                        onTouchStart: function(swiper){

                            for (var i = 0; i < swiper.slides.length; i++){

                              swiper.setTransition(swiper.slides[i], 0);

                            }

                        },

                        onSetWrapperTransition:  function(swiper, speed) {

                            for (var i = 0; i < swiper.slides.length; i++){

                              swiper.setTransition(swiper.slides[i], speed);

                            }

                        }

                    }

                 



            } else {



               var touchRatio = 0.6;



                $sliderOptions = {

                    loop: $useLoop,

                    grabCursor: $grab,

                    touchRatio: touchRatio,

                    speed: 525,

                    useCSS3Transforms: false,

                    pagination : $bullets,

                    simulateTouch: $desktopSwipe,

                    onSlideChangeEnd: captionTransition,

                    onSlideChangeStart: sliderArrowCount,

                    onTouchMove: clearAutoplay,

                    onFirstInit: nectarInit

                        

                }

            }



    		

    		$nectarSliders[i] = new Swiper('#'+$(this).attr('id')+' .swiper-container', $sliderOptions);

    		$nectarSliders[i].swipeReset();



    		 

    		 

    		 //webkit looped slider first video fix

    		 if(navigator.userAgent.indexOf('Chrome') > 0) { 

    		 	 if( jQuery(this).find('.swiper-slide:nth-child(2) video').length > 0 && jQuery(this).find('.swiper-container').attr('data-loop') == 'true') {



    			  	var webmSource = jQuery(this).find('.swiper-slide:nth-child(2) video source[type="video/webm"]').attr('src') + "?id="+Math.ceil(Math.random()*10000);

    	          	var firstVideo = jQuery(this).find('.swiper-slide:nth-child(2) video').get(0);

    	          	firstVideo.src = webmSource;

    	          	firstVideo.load();

    	          	

    	          	var webmSource2 = jQuery(this).find('.swiper-slide:last-child video source[type="video/webm"]').attr('src') + "?id="+Math.ceil(Math.random()*10000);

    	          	var lastVideo = jQuery(this).find('.swiper-slide:last-child video').get(0);

    	          	lastVideo.src = webmSource2;

    	          	lastVideo.load();

    	         }



                 if( jQuery(this).find('.swiper-slide:eq(-2) video').length > 0 && jQuery(this).find('.swiper-container').attr('data-loop') == 'true') {



                    var webmSource = jQuery(this).find('.swiper-slide:eq(-2) video source[type="video/webm"]').attr('src') + "?id="+Math.ceil(Math.random()*10000);

                    var firstVideo = jQuery(this).find('.swiper-slide:eq(-2) video').get(0);

                    firstVideo.src = webmSource;

                    firstVideo.load();

                    

                    var webmSource2 = jQuery(this).find('.swiper-slide:nth-child(1) video source[type="video/webm"]').attr('src') + "?id="+Math.ceil(Math.random()*10000);

                    var lastVideo = jQuery(this).find('.swiper-slide:nth-child(1) video').get(0);

                    lastVideo.src = webmSource2;

                    lastVideo.load();

                 }

    		 }





     

    		//Navigation arrows

    		if($arrows == 'true' && $('#'+$(this).attr('id') +' .swiper-wrapper > div').length > 1 ){

    			

    			$('.slide-count i').transition({ scale: 0.5, opacity: 0 });

    			

    			//hover event

    			$('body').on('mouseenter','.swiper-container .slider-prev, .swiper-container .slider-next',function(){

    				

    				$(this).find('.slide-count i').clearQueue().stop(true,true).delay(110).transition({ scale: 1, opacity: 1 },200);

    				

    				$(this).stop(true,true).animate({

    					'width' : '100px'

    				},300,'easeOutCubic');

    				$(this).find('.slide-count span').clearQueue().stop().delay(100).animate({

    					'opacity' : '1'

    				},225,'easeOutCubic');

    			});



                $('body').on('mouseleave','.swiper-container .slider-prev, .swiper-container .slider-next',function(){

                    

                    $('.slide-count i').stop(true,true).transition({ scale: 0, opacity: 0 },200);

                    

                    $(this).stop().delay(150).animate({

                        'width' : '50px'

                    },300,'easeOutCubic');

                    $(this).find('.slide-count span').stop(true,true).animate({

                        'opacity' : '0'

                    },200,'easeOutCubic');

                });

    			

    			//add slide counts

    			var $slideCount = ($(this).find('.swiper-container').attr('data-loop') != 'true' ) ? $('#'+$(this).attr('id') + ' .swiper-wrapper > div').length :  $('#'+$(this).attr('id') + ' .swiper-wrapper > div').length - 2;

    			

    			//ie8

    			if($('html').hasClass('no-video')) $slideCount = $('#'+$(this).attr('id') + ' .swiper-wrapper > div').length;

    			

    			$('#'+$(this).attr('id')+' .slider-prev .slide-count .slide-total').html( $slideCount );

    			$('#'+$(this).attr('id')+' .slider-next .slide-count .slide-total').html( $slideCount );

    			

    			//prev



                function prevArrowAnimation(e) {

                                

                   if($(this).hasClass('inactive')) return false;

                   

                   var $that = $(this); 

                   

                   //non looped slider

                   if($(this).parents('.swiper-container').attr('data-loop') != 'true') {

                        

                      

                       if( $(this).parents('.swiper-container').find('.swiper-slide-active').index()+1 == 1 && !$('html').hasClass('no-video')){

                            

                            //make sure the animation is complete

                             var $timeout;

                           

                             clearTimeout($timeout);

                             $timeout = setTimeout(function(){ $that.removeClass('inactive'); } ,700);



                             if( $(this).parents('.nectar-slider-wrap ').attr('data-transition') != 'fade') {



                                 $(this).parents('.swiper-container').find('.swiper-wrapper').stop(true,false).css('transition','none').animate({

                                    'left' : parseInt($(this).parents('.swiper-container').find('.swiper-wrapper').css('left')) + 20

                                 },200,function(){

                                    $(this).parents('.swiper-container').find('.swiper-wrapper').stop(true,false).css('transition','left,top');

                                    $nectarSliders[i].swipeReset();

                                 });

                             }



                             $(this).addClass('inactive');

                            

                       }    

                     

                   }



                   e.preventDefault();

                   $nectarSliders[i].swipePrev();



                    if( $(this).parents('.nectar-slider-wrap ').attr('data-transition') == 'fade') {

                         var $timeout;

                           

                         clearTimeout($timeout);

                         $timeout = setTimeout(function(){ $that.removeClass('inactive'); } ,800);



                         $(this).addClass('inactive');

                    }

                }



                $('body').off('click','#'+$(this).attr('id')+' .slider-prev',prevArrowAnimation);

                $('body').on('click','#'+$(this).attr('id')+' .slider-prev',prevArrowAnimation);





                function nextArrowAnimation(e) {

                   

                   if($(this).hasClass('inactive')) return false;

                   

                   var $that = $(this);     

                   var $slideNum = $(this).parents('.swiper-container').find('.swiper-wrapper > div').length;

                    

                    //non looped slider

                   if($(this).parents('.swiper-container').attr('data-loop') != 'true') {

                    

                         if( $(this).parents('.swiper-container').find('.swiper-slide-active').index()+1 == $slideNum && !$('html').hasClass('no-video')) {



                            //make sure the animation is complete

                            var $timeout;

                               

                            clearTimeout($timeout);

                            $timeout = setTimeout(function(){ $that.removeClass('inactive'); } ,700);



                            if( $(this).parents('.nectar-slider-wrap ').attr('data-transition') != 'fade') {

                                 $(this).parents('.swiper-container').find('.swiper-wrapper').stop(true,false).css('transition','none').animate({

                                    'left' : parseInt($(this).parents('.swiper-container').find('.swiper-wrapper').css('left')) - 20

                                 },200,function(){

                                    $(this).parents('.swiper-container').find('.swiper-wrapper').stop(true,false).css('transition','left,top');

                                    $nectarSliders[i].swipeReset();

                                 });

                             }

                             $(this).addClass('inactive');

                        }

                   }

                    

                        

                   e.preventDefault();

                   $nectarSliders[i].swipeNext();



                    if( $(this).parents('.nectar-slider-wrap ').attr('data-transition') == 'fade') {

                         var $timeout;

                           

                         clearTimeout($timeout);

                         $timeout = setTimeout(function(){ $that.removeClass('inactive'); } ,800);



                         $(this).addClass('inactive');

                    }

                   

                }



    			//next

                $('body').off('click','#'+$(this).attr('id')+' .slider-next',  nextArrowAnimation);

    			$('body').on('click','#'+$(this).attr('id')+' .slider-next',  nextArrowAnimation);







    		}





    	    //Clickable pagination

    	    if($bullets != null && $('#'+$(this).attr('id') +' .swiper-wrapper > div').length > 1 ){

    		    $('#'+$(this).attr('id')+' .slider-pagination .swiper-pagination-switch').click(function(){

    		        $nectarSliders[i].swipeTo($(this).index());

    		    });

    	    }

    	});

    	





	}



	nectarSliderMainInit();

	

	

	

    function darkFirstSlide(slider){

        if( slider.parents('.parallax_slider_outer').length > 0 && slider.find('.swiper-slide-active[data-color-scheme="dark"]').length > 0 ) {

            $('#header-outer').addClass('dark-slide');

        } else {

            $('#header-outer').removeClass('dark-slide');

        }

    }







	//initial slide load 



    var $animating = false;



    //responsive slider

    var $sliderHeights = [];

    var $existingSliders = [];





    function initialSlideLoad() {



        $animating = false;



        $sliderHeights = [];

        $existingSliders = [];



        //add class to first video slide

        $('.swiper-wrapper').each(function(){

            if($(this).find('.swiper-slide:nth-child(2) video').length > 0) $(this).find('.swiper-slide:nth-child(2)').addClass('first_video_slide');

        });





    	$('.nectar-slider-wrap').each(function(i){

    		

    		var $sliderWrapCount = $('.nectar-slider-wrap').length;

    		var $that = $(this);



    		if($(this).find('.swiper-slide-active video').length > 0){

    			

    			if(!$('html').hasClass('no-video')){

    				$(this).find('.swiper-slide-active:first video').get(0).load();

    				$(this).find('.swiper-slide-active:first video').get(0).addEventListener('loadeddata',function(){

    				

    					showSliderControls();

    					resizeToCover();

    					slideContentPos();

    					sliderLoadIn($that);

    					captionTransition($nectarSliders[i]);

    					darkFirstSlide($that);

    					

    				});



    			} 

    			//ie8

    			else {

    				showSliderControls();

    				resizeToCover();

    				slideContentPos();

    				sliderLoadIn($that);

    				captionTransition($nectarSliders[i]);

                    darkFirstSlide($that);

    			}

    		} 

    		else {

    	 

    			var $firstBg = $(this).find('.swiper-slide-active').attr('style');

    		    var pattern = /url\(["']?([^'")]+)['"]?\)/;

    		    var match = pattern.exec($firstBg);

  

    		    if (match) {

    		    	       

    		        var slideImg = new Image();

    				slideImg.src = match[1];

    				

    				$(slideImg).load(function(){ 

    					showSliderControls();

    					resizeToCover();

    					slideContentPos();

    					sliderLoadIn($that);

    					captionTransition($nectarSliders[i]);

                        darkFirstSlide($that);

    				});

    			}

    		}

    		

    		//mobile check

    		if(navigator.userAgent.match(/(Android|iPod|iPhone|iPad|IEMobile|Opera Mini)/)){

    			captionTransition($nectarSliders[i]);

    			showSliderControls();

    			resizeToCover();

    			slideContentPos();

                darkFirstSlide($that);

    			

    			setTimeout(function(){ resizeToCover(); slideContentPos(); },400);

    			

    			$('.nectar-slider-wrap').find('.nectar-slider-loading').fadeOut(800,'easeInOutExpo');

    			$('body #header-outer[data-transparent-header="true"] .ns-loading-cover').fadeOut(800,'easeInOutExpo',function(){

    				$(this).remove();

    				$('.nectar-slider-wrap.first-section .swiper-container .swiper-wrapper .swiper-slide').removeClass('not-loaded');

    			});

    			

    			$('.nectar-slider-wrap .mobile-video-image').show();

    			$('.nectar-slider-wrap .video-wrap').remove();

    		}

    		

    	});





        ////get slider heights

        $('.swiper-container').each(function(i){

            $sliderHeights[i] = parseInt($(this).attr('data-height'));  

            $existingSliders[i] = $(this).parent().attr('id');

        });





    }









    function nectarInit(){

        if(doneVideoInit == true) return;

        

         //videos

        /*$('.swiper-slide .slider-video').mediaelementplayer({

            enableKeyboard: false,

            iPadUseNativeControls: false,

            pauseOtherPlayers: false,

            // force iPhone's native controls

            iPhoneUseNativeControls: false,

            // force Android's native controls

            AndroidUseNativeControls: false

        });*/



        //if using pp - init it after slide loads

        if($().prettyPhoto) prettyPhotoInit();

        

        

        doneVideoInit = true;

     }





	

	initialSlideLoad();

	

	



	

	

	//dynamic height sliders

	dynamicHeightSliders();

	function dynamicHeightSliders(){

		

		var $adminBarHeight = ($('#wpadminbar').length > 0) ? 28 : 0 ;

		

			$('.nectar-slider-wrap').each(function(){

				

				var $heightCalc;

				var $minHeight = $('.swiper-container').attr('data-min-height');

				

				//fullscreen

				if($(this).attr('data-fullscreen') == 'true' && $(this).attr('data-full-width') == 'true') {

					

					//first slider on page

					if($(this).hasClass('first-section') && $(this).index() == 0){

						

						//min height

						$heightCal = ( ($(window).height() - $(this).offset().top + 2) <= $minHeight ) ? $minHeight : $(window).height() - $(this).offset().top + 2;

						$(this).find('.swiper-container').attr('data-height',$heightCal);

						

					}

					//first parallax slider on page

					else if($(this).parents('.parallax_slider_outer').length > 0 && $(this).parents('#full_width_portfolio').length == 0){ 

						

						//min height

						$heightCal = ( ($(window).height() - $(this).parent().offset().top + 2) <= $minHeight ) ? $minHeight : $(window).height() - $(this).parent().offset().top + 2;

						$(this).find('.swiper-container').attr('data-height',$heightCal);

						

					}

					//first portfolio slider on page

					else if($(this).parents('#full_width_portfolio').length > 0 && $(this).attr('data-parallax') != 'true' && $(this).index() == 0){ 

						

						//min height

						$heightCal = ( ($(window).height() - $(this).offset().top + 2) <= $minHeight ) ? $minHeight : $(window).height() - $(this).offset().top + 2;

						$(this).find('.swiper-container').attr('data-height',$heightCal);

						

					}

					//first portfolio parallax slider on page

					else if($(this).parents('#full_width_portfolio').length > 0 && $(this).attr('data-parallax') == 'true'){ 

						

						//min height

						$heightCal = ( ($(window).height() - $(this).offset().top + 2) <= $minHeight ) ? $minHeight : $(window).height() - $(this).offset().top + 2;

						$(this).find('.swiper-container').attr('data-height',$heightCal);

					}

					//all others

					else { 

						

						//min height

						$heightCal = ( $(window).height() <= $minHeight ) ? $minHeight : $(window).height();

						$(this).find('.swiper-container').attr('data-height',$heightCal);

					}

					

					//transparent header loading icon center

					if($('body #header-outer[data-transparent-header="true"]').length > 0

					   && $('.first-section .nectar-slider-wrap[data-fullscreen="true"]').length > 0 

					   && $('#page-header-bg').length == 0) {

					   	

						$('.first-section .nectar-slider-loading').css({

							'background-image': $loading_bg_storage,

							'background-position' : 'center ' + ((($(window).height() /2) + 15) - $('#header-space').height()) +'px'

						});



                        $('.first-section .nectar-slider-wrap .nectar-slider-loading .loading-icon').css({

                            'opacity' : '1',

                            'height' :  $(window).height() - $('#header-space').height() + 'px'

                        });

    				}

	

				}



				//flexible height

				if($(this).attr('data-flexible-height') == 'true' && $(this).attr('data-fullscreen') != 'true') {

					

					//escape if not placed in a flexible ready position

					if($(this).parents('.wpb_row.full-width-content').length == 0 && $(this).attr('data-full-width') == 'false') { $(this).attr('data-flexible-height','false'); return false; }

					

					var $minHeight = $('.swiper-container').attr('data-min-height');

					

					var currentKey = $existingSliders.getKeyByValue($(this).attr('id')); 

					var $windowWidth = $(window).width();

					var $definedHeight = $sliderHeights[currentKey];



					var dif = $(window).width() / 1600;



					if( window.innerWidth > 1000 && $('#boxed').length == 0) {

						$(this).find('.swiper-container').attr('data-height',$definedHeight*dif);

					} else {

						

						//column sliders

						var $parentCol = ($(this).parents('.wpb_column').length > 0) ? $(this).parents('.wpb_column') : $(this).parents('.col') ;

						if($parentCol.length == 0) $parentCol = $('.main-content');

							

						if(!$parentCol.hasClass('vc_span12') && !$parentCol.hasClass('main-content') && !$parentCol.hasClass('span_12') ) {

						

							var $parentColWidth = sliderColumnDesktopWidth($parentCol);

							var $parentColRatio = 1100/$parentColWidth;

							

							//min height

							if( $definedHeight*dif <= $minHeight ){

								$(this).find('.swiper-container').attr('data-height',$minHeight);

							} else {

								$(this).find('.swiper-container').attr('data-height',$parentColRatio*$definedHeight*dif);	

							}

							

						} 

						

						

						//boxed

						else if($('#boxed').length > 0){

							

							var dif = $('#boxed').width() / 1600;

							

							if( window.innerWidth > 1300 ) {

								

								if($('body[data-ext-responsive="true"]').length > 0){

									

									if($(this).has('[data-full-width="boxed-full-width"]')) {

										($('#boxed').width() < 1400) ? $(this).find('.swiper-container').attr('data-height',$definedHeight*dif) : $(this).find('.swiper-container').attr('data-height',$definedHeight*(1400/1600));

									}

									

								} else {

									if($(this).has('[data-full-width="boxed-full-width"]')) $(this).find('.swiper-container').attr('data-height',$definedHeight*(1200/1600));

								}

								

						    } else if( window.innerWidth <= 1300 && window.innerWidth >= 1000  ) {

								

								if($('body[data-ext-responsive="true"]').length > 0){

									$(this).find('.swiper-container').attr('data-height',$definedHeight*dif);

								} else {

									if($(this).has('[data-full-width="boxed-full-width"]')) $(this).find('.swiper-container').attr('data-height',$definedHeight*(980/1600));

								}

								

							} else if( window.innerWidth < 1000 && window.innerWidth > 690 ) {

								

								var $heightCalc = ( $definedHeight*(679/1600) <= $minHeight ) ? $minHeight : $definedHeight*(679/1600);

								if($(this).has('[data-full-width="boxed-full-width"]')) $(this).find('.swiper-container').attr('data-height',$minHeight);

							

							} else if( window.innerWidth <= 690 && window.innerWidth >= 470 ) {

								

								var $heightCalc = ( $definedHeight*(410/1600) <= $minHeight ) ? $minHeight : $definedHeight*(410/1600);

								if($(this).has('[data-full-width="boxed-full-width"]')) $(this).find('.swiper-container').attr('data-height', $heightCalc);

							

							} else if( window.innerWidth < 470 ) {

								

								var $heightCalc = ( $definedHeight*(318/1600) <= $minHeight ) ? $minHeight : $definedHeight*(318/1600);

								if($(this).has('[data-full-width="boxed-full-width"]')) $(this).find('.swiper-container').attr('data-height', $heightCalc);

							

							} 

							

						}

						

						

						//regular

						else {

							

							//min height

							if( $definedHeight*dif <= $minHeight ){

								$(this).find('.swiper-container').attr('data-height',$minHeight);

							} else {

								$(this).find('.swiper-container').attr('data-height',$definedHeight*dif);

							}

							

						}

						

					}

					

					

					//transparent header loading icon center

					if($('body #header-outer[data-transparent-header="true"]').length > 0 && 

					   $('.first-section .nectar-slider-wrap[data-flexible-height="true"]').length > 0) {

					   	

						$('.first-section .nectar-slider-loading').css({

							'background-image': $loading_bg_storage,

							'background-position' : 'center ' + (((($definedHeight*dif)/2) + 15) - $('#header-space').height()) +'px'

						});



                        $('.first-section .nectar-slider-wrap .nectar-slider-loading .loading-icon').css({

                            'opacity' : '1',

                            'height' :  $definedHeight*dif - $('#header-space').height() + 'px'

                        });

					}

					

				}

		});

	}

	

	if(window.innerWidth > 690){

		$(window).on('resize.dynamicHeights',dynamicHeightSliders);

	} else {

		

		//stop mobile browsers from firing the resize event on scroll (when toolbar hides)

        var $windowWidth = $(window).width(), $windowHeight = $(window).height();

        var $orientationChange = 0;

    

        window.addEventListener("orientationchange", function() {

           $orientationChange = 1;

        });

        

        $(window).resize(function(){

            if( ($(window).width() != $windowWidth && $(window).height != $windowHeight) || $orientationChange == 1){

                dynamicHeightSliders(); 

                $orientationChange = 0;

            }

        });

	}

	

	

	

	////helper function

	function sliderColumnDesktopWidth(parentCol) {

		

		var $parentColWidth = 1100;

		var $columnNumberParsed = $(parentCol).attr('class').match(/\d+/);

		

		if($columnNumberParsed == '2') { $parentColWidth = 170 }

		else if($columnNumberParsed == '3') { $parentColWidth = 260 } 

		else if($columnNumberParsed == '4') { $parentColWidth = 340 } 

		else if($columnNumberParsed == '6') { $parentColWidth = 530 } 

		else if($columnNumberParsed == '8') { $parentColWidth = 700 } 

		else if($columnNumberParsed == '9') { $parentColWidth = 805 }

		else if($columnNumberParsed == '10') { $parentColWidth = 916.3 }

		else if($columnNumberParsed == '12') { $parentColWidth = 1100 }

	

		return $parentColWidth;

	}

	

	

	sliderSize();

	$(window).resize(sliderSize);

	

	function sliderSize(){

		



		//check for mobile first

		if( window.innerWidth < 1000 && window.innerWidth > 690 ) {

			

			//fullwidth sliders

			$('.nectar-slider-wrap[data-full-width="true"]:not([data-fullscreen="true"],[data-flexible-height="true"])').each(function(i){

				currentKey = $existingSliders.getKeyByValue($(this).attr('id')); 

				$(this).find('.swiper-container').attr('data-height',$sliderHeights[currentKey]/1.4 )	

			});

			

			//column sliders

			$('.nectar-slider-wrap[data-full-width="false"]:not([data-flexible-height="true"])').each(function(i){

				currentKey = $existingSliders.getKeyByValue($(this).attr('id')); 

				

				var $currentSliderHeight = $sliderHeights[currentKey];

				var $parentCol = ($(this).parents('.wpb_column').length > 0) ? $(this).parents('.wpb_column') : $(this).parents('.col');

				

				//fullwidth but inside the span_9 post area

				if($(this).parents('#post-area').length > 0 && $(this).parents('.vc_span12').length > 0) $parentCol = $(this).parents('#post-area');

				

				//last resort

				if($parentCol.length == 0) $parentCol = $('.main-content');



				var $parentColWidth = sliderColumnDesktopWidth($parentCol);

				

				var $aspectRatio = $currentSliderHeight/$parentColWidth;

				

				$(this).find('.swiper-container').attr('data-height',$aspectRatio*$parentCol.width());

			});

			

			//boxed sliders

			$('.nectar-slider-wrap[data-full-width="boxed-full-width"]:not([data-flexible-height="true"])').each(function(i){

				currentKey = $existingSliders.getKeyByValue($(this).attr('id')); 

				$(this).find('.swiper-container').attr('data-height',$sliderHeights[currentKey]/1.9 )	

			});

		} 

		

		else if( window.innerWidth <= 690 ) {

	      

	      //fullwidth sliders		

		  $('.nectar-slider-wrap[data-full-width="true"]:not([data-fullscreen="true"],[data-flexible-height="true"])').each(function(i){

		  	currentKey = $existingSliders.getKeyByValue($(this).attr('id')); 

			$(this).find('.swiper-container').attr('data-height',$sliderHeights[currentKey]/2.7 )	

		  });

		  

		  //column sliders

		  $('.nectar-slider-wrap[data-full-width="false"]:not([data-flexible-height="true"])').each(function(i){

		  	currentKey = $existingSliders.getKeyByValue($(this).attr('id')); 

			

			var $currentSliderHeight = $sliderHeights[currentKey];

			var $parentCol = ($(this).parents('.wpb_column').length > 0) ? $(this).parents('.wpb_column') : $(this).parents('.col');

			

			//fullwidth but inside the span_9 post area

			if($(this).parents('#post-area').length > 0 && $(this).parents('.vc_span12').length > 0) $parentCol = $(this).parents('#post-area');

			

			//last resort

			if($parentCol.length == 0) $parentCol = $('.main-content');

			

			var $parentColWidth = sliderColumnDesktopWidth($parentCol);

			

			var $aspectRatio = $currentSliderHeight/$parentColWidth;

			

			$(this).find('.swiper-container').attr('data-height',$aspectRatio*$parentCol.width());	

		  });

		  

		  //boxed sliders		

		  $('.nectar-slider-wrap[data-full-width="boxed-full-width"]:not([data-flexible-height="true"])').each(function(i){

		  	currentKey = $existingSliders.getKeyByValue($(this).attr('id')); 

			$(this).find('.swiper-container').attr('data-height',$sliderHeights[currentKey]/2.9 )	

		  });

		

		} 

		

		else if( window.innerWidth < 1300 && window.innerWidth >= 1000  ) {

	      

	      //fullwidth sliders		

		  $('.nectar-slider-wrap[data-full-width="true"]:not([data-fullscreen="true"],[data-flexible-height="true"])').each(function(i){

		  	currentKey = $existingSliders.getKeyByValue($(this).attr('id')); 

			$(this).find('.swiper-container').attr('data-height',$sliderHeights[currentKey]/1.2 )	

		  });

		  

		  //column sliders

		  $('.nectar-slider-wrap[data-full-width="false"]:not([data-flexible-height="true"])').each(function(i){

		  	currentKey = $existingSliders.getKeyByValue($(this).attr('id')); 

			

			var $currentSliderHeight = $sliderHeights[currentKey];

			var $parentCol = ($(this).parents('.wpb_column').length > 0) ? $(this).parents('.wpb_column') : $(this).parents('.col') ;

			

			//fullwidth but inside the span_9 post area

			if($(this).parents('#post-area').length > 0 && $(this).parents('.vc_span12').length > 0) $parentCol = $(this).parents('#post-area');

			

			//last resort

			if($parentCol.length == 0) $parentCol = $('.main-content');

			

			var $parentColWidth = sliderColumnDesktopWidth($parentCol);

			

			var $aspectRatio = $currentSliderHeight/$parentColWidth;

			

			$(this).find('.swiper-container').attr('data-height',$aspectRatio*$parentCol.width());	

					

		  });

		  

		  //boxed sliders		

		  $('.nectar-slider-wrap[data-full-width="boxed-full-width"]:not([data-flexible-height="true"])').each(function(i){

		  	currentKey = $existingSliders.getKeyByValue($(this).attr('id')); 

			$(this).find('.swiper-container').attr('data-height',$sliderHeights[currentKey]/1.2 )	

		  });

		

		} 

		

		else {

			

			//fullwidth sliders

			$('.nectar-slider-wrap[data-full-width="true"]:not([data-fullscreen="true"],[data-flexible-height="true"])').each(function(i){

				currentKey = $existingSliders.getKeyByValue($(this).attr('id'));

				if($(this).attr('data-flexible-height') != 'true') $(this).find('.swiper-container').attr('data-height',$sliderHeights[currentKey])	

			});

			

			//boxed sliders

			$('.nectar-slider-wrap[data-full-width="false"], .nectar-slider-wrap[data-full-width="boxed-full-width"]:not([data-flexible-height="true"])').each(function(i){

				currentKey = $existingSliders.getKeyByValue($(this).attr('id')); 

				if($(this).attr('data-flexible-height') != 'true') $(this).find('.swiper-container').attr('data-height',$sliderHeights[currentKey] )	

			});

		}



	}

	

	

	

	

	 



	//slider height

	

	var min_w = 1500; // minimum video width allowed

	var vid_w_orig;  // original video dimensions

	var vid_h_orig;

	

    vid_w_orig = 1280;

    vid_h_orig = 720;

    var $headerHeight = $('header').height()-1;

    

    function nsSliderContentResize(e){

         resizeToCover(); slideContentPos(); 



         for(var i=0; i < $nectarSliders.length; i++){



            //make sure the parent is not hidden

            if($($nectarSliders[i].container).parent().attr('data-transition') && $($nectarSliders[i].container).parent().attr('data-transition') == 'fade') {

                

                for(var k=0; k < $nectarSliders[i].slides.length; k++){

                      $nectarSliders[i].setTransition($nectarSliders[i].slides[k], 0);

                }



                $('.swiper-wrapper').stop(true,true).css('transition-duration','0s');



                if($('.nectar-slider-loading').css('display') == 'none') {

                     $('.swiper-wrapper .swiper-slide.swiper-slide-active .content > *').css({

                        'opacity': 1,

                        'padding-top' : 0

                     });

                 }

             }



            $nectarSliders[i].reInit();

            $nectarSliders[i].resizeFix();

                

        }



    }



   // $(window).off('resize.nsSliderContent');

    $(window).on('resize.nsSliderContent',nsSliderContentResize);

    if(!$('body').hasClass('ajax-loaded')) $(window).trigger('resize'); 

 

	function resizeToCover() {

		$('.nectar-slider-wrap').each(function(i){





			if( $(this).css('visibility') != 'hidden') {



    			//width resize 

    			if($('body > #boxed').length == 0 && $('.nectar-slider-wrap[data-full-width="true"]').parent().attr('id') != 'portfolio-extra' && $(this).parents('#post-area:not(".span_12")').length == 0){ 

    				$('.nectar-slider-wrap[data-full-width="true"], .parallax_slider_outer.first-section .nectar-slider-wrap').css('left', -(($(window).width()-$smoothSrollWidth)/2 - $('.main-content').width()/2))+'px';

    				$('.nectar-slider-wrap[data-full-width="true"] .swiper-container, .nectar-slider-wrap[data-full-width="true"], .parallax_slider_outer.first-section .swiper-container, .parallax_slider_outer.first-section .nectar-slider-wrap').css('width',$(window).width());

    			} 

    			else if( $('.nectar-slider-wrap[data-full-width="true"]').parent().attr('id') == 'portfolio-extra' && $('#full_width_portfolio').length != 0){   

    				$('.nectar-slider-wrap[data-full-width="true"], .parallax_slider_outer.first-section .nectar-slider-wrap').css('left', -(($(window).width()-$smoothSrollWidth)/2 - $('.main-content').width()/2))+'px';

    				$('.nectar-slider-wrap[data-full-width="true"] .swiper-container, .nectar-slider-wrap[data-full-width="true"], .parallax_slider_outer.first-section .swiper-container, .parallax_slider_outer.first-section .nectar-slider-wrap').css('width',$(window).width());

    			}

    			else {

    				var $container = ($('body > #boxed').length == 0) ? '#post-area' : '.container-wrap';

    				//backup incase only slider is used with nothing else in boxed mode

    				if($($container).width() == '0' && $('body > #boxed').length > 0) $container = '#boxed';

    				$('.nectar-slider-wrap[data-full-width="true"] .swiper-container, .nectar-slider-wrap[data-full-width="true"], .parallax_slider_outer.first-section .swiper-container, .parallax_slider_outer.first-section .nectar-slider-wrap').css('width',$($container).width());

    			}

    			

    			var $sliderHeight = parseInt($(this).find('.swiper-container').attr('data-height'));

    			var isFullWidthCompatible = ($(this).attr('data-full-width') == 'true') ? 'true' : 'false';

    			

    			if($(this).parent().attr('id') == 'portfolio-extra' && $('#full_width_portfolio').length == 0 || $(this).parents('#post-area').length > 0) { isFullWidthCompatible = 'false'; };

    			

    			var $sliderWidth = (isFullWidthCompatible == 'true') ? $(window).width()-$smoothSrollWidth : $(this).width();

    			

    			$(this).parents('.parallax_slider_outer').css('height',$sliderHeight);

    			$(this).css('height',$sliderHeight);

    			$(this).find('.swiper-container, .swiper-slide').css({'height':$sliderHeight+2, 'top':'-1px'});

    			$(this).find('.swiper-container').css('width', $sliderWidth);

    			//$(this).find('.swiper-slide').css('width', $sliderWidth);

    			

    		    // set the video viewport to the window size

    		    $(this).find('.video-wrap').width($sliderWidth+2);

    		    $(this).find('.video-wrap').height($sliderHeight+2);

    		

    		    // use largest scale factor of horizontal/vertical

    		    var scale_h = $sliderWidth / vid_w_orig;

    		    var scale_v = ($sliderHeight - $headerHeight) / vid_h_orig; 

    		    var scale = scale_h > scale_v ? scale_h : scale_v;

    			

    			//update minium width to never allow excess space

    		    min_w = 1280/720 * ($sliderHeight+20);

    		    

    		    // don't allow scaled width < minimum video width

    		    if (scale * vid_w_orig < min_w) {scale = min_w / vid_w_orig;}

    		        

    		    // now scale the video

    		    $(this).find('video, .mejs-overlay, .mejs-poster').width(Math.ceil(scale * vid_w_orig +2));

    		    $(this).find('video, .mejs-overlay, .mejs-poster').height(Math.ceil(scale * vid_h_orig +2));

    		    

    		    // and center it by scrolling the video viewport

    		    $(this).find('.video-wrap').scrollLeft(($(this).find('video').width() - $sliderWidth) / 2);

    		    

    		    $(this).find('.swiper-slide').each(function(){

    		    	

    		    	//video alignment

    		    	if($(this).find('.video-wrap').length > 0){

    			    	//align  middle

    				    if($(this).attr('data-bg-alignment') == 'center'){

    				    	$(this).find('.video-wrap, .mejs-overlay, .mejs-poster').scrollTop(($(this).find('video').height() - ($sliderHeight)) / 2);

    				    }

    				    //align bottom

    				    else if($(this).attr('data-bg-alignment') == 'bottom'){

    				    	$(this).find('.video-wrap').scrollTop(($(this).find('video').height() - ($sliderHeight+2)));

    				    }

    				    //align top

    				    else {

    				    	$(this).find('.video-wrap').scrollTop(0);

    				    } 

    			    }

    		    	

    		    });



            } //if visible



		});

	}; 

	

	////initial call

	resizeToCover();

	

	

	//caption transitions 

	function captionTransition(obj){ 

		 

			resizeToCover(); 

			

			var $containerClass;



			(typeof obj == 'undefined') ? $containerClass = 'div[id^=ns-id-]' : $containerClass = '#'+$(obj.container).parents('.nectar-slider-wrap').attr('id'); ;

	   



	 		var fromLeft = Math.abs(parseInt($($containerClass+' .swiper-wrapper').css('left')));

			var currentSlide = Math.round(fromLeft/$($containerClass+' .swiper-slide').width()); 

			var $slideNum =  $($containerClass+':first .swiper-wrapper > div').length;  



			if($($containerClass).attr('data-transition') == 'fade') currentSlide = $($containerClass + ' .swiper-slide-active').index();



			if(isNaN(currentSlide)) currentSlide = 0;



			//make sure user isn't going back to same slide 

			if( $($containerClass+' .swiper-slide:nth-child('+ (currentSlide + 1) +')').find('.content *').length > 0 ) {

				if($($containerClass+' .swiper-slide:nth-child('+ (currentSlide + 1) +')').find('.content *').css('opacity') != '0' && !$('html').hasClass('no-video')) {

					//play video if there's one

					playVideoBG(currentSlide + 1, $containerClass);

					

					if(!$($containerClass+' .swiper-slide:nth-child('+ (currentSlide + 1) +')').hasClass('autorotate-shown')) {

						return false;

					} else {

						$($containerClass+' .swiper-slide').removeClass('autorotate-shown');

					}

					

				}

			} 

			

			//hide all

			if(!$('html').hasClass('no-video')) {

				$($containerClass+' .swiper-slide .content p, '+$containerClass+' .swiper-slide .content h2, '+$containerClass+' .swiper-slide .content .buttons').stop(true,true).animate({'opacity':0, 'padding-top': 25},1);

			}

			

			//pause video if there's one

			$($containerClass+' .swiper-slide').each(function(){

				if($(this).find('.video-wrap video').length > 0 && !$('html').hasClass('no-video')) { $(this).find('.video-wrap video').get(0).pause(); }

			});

			$($containerClass+' .swiper-slide:not(".swiper-slide-active")').each(function(){

				if($(this).find('.video-wrap video').length > 0) { 

	       

					if($(this).find('.video-wrap video').get(0).currentTime != 0 ) $(this).find('.video-wrap video').get(0).currentTime = 0;

				}

			});

			

			

			

			if($($containerClass +' .swiper-container').attr('data-loop') == 'true') {





				//webkit video fix

				if(  $($containerClass+' .swiper-slide-active').index()+1 == 2 && $($containerClass+' .swiper-slide-active video').length > 0  && !$('html').hasClass('no-video')) { 



					$($containerClass+' .swiper-slide:last-child').find('.video-wrap video').get(0).play();

					$($containerClass+' .swiper-slide:last-child').find('.video-wrap video').get(0).pause();

				}

				if(  $($containerClass+' .swiper-slide-active').index()+1 == $slideNum-1 && $($containerClass+' .swiper-slide-active video').length > 0  && !$('html').hasClass('no-video')) { 

					

					$($containerClass+' .swiper-slide:first-child').find('.video-wrap video').get(0).play();

					$($containerClass+' .swiper-slide:first-child').find('.video-wrap video').get(0).pause();

				}

				if($($containerClass+' .swiper-slide-active').index()+1 != 2 && $($containerClass+' .swiper-slide:nth-child(2) video').length > 0  && !$('html').hasClass('no-video')) {

					

					$($containerClass+' .swiper-slide:last-child').find('.video-wrap video').get(0).play();

					$($containerClass+' .swiper-slide:last-child').find('.video-wrap video').get(0).pause();

					

					$($containerClass+' .swiper-slide:nth-child(2) video').get(0).pause();

					if($($containerClass+' .swiper-slide:nth-child(2) video').get(0).currentTime != 0 ) $($containerClass+' .swiper-slide:nth-child(2) video').get(0).currentTime = 0;

				}

				

				

				//also show duplicate slide if applicable

				////first

				if(  $($containerClass+' .swiper-slide-active').index()+1 == $slideNum-1 ){



					$($containerClass+' .swiper-slide:nth-child(1)').find('.content').children().each(function(i){

	

						$(this).stop().delay(i*90).animate({

							'opacity' : 1,

							'padding-top' : 0

						},{ duration: 400, easing: 'easeOutQuad'});	

					});

	

				}

				

				////last

				if( $($containerClass+' .swiper-slide-active').index()+1 == 2 ){

					$($containerClass+' .swiper-slide:nth-child('+ ($slideNum) + ')').find('.content').children().each(function(i){

						$(this).stop().delay(i*90).animate({

							'opacity' : 1,

							'padding-top' : 0

						},{ duration: 400, easing: 'easeOutQuad'});	

					});

	

				}





                //looped last going to first

                if(  $($containerClass+' .swiper-slide-active').index()+1 == $slideNum ){



                   $($containerClass+' .swiper-slide:nth-child(2)').find('.content').children().each(function(i){

    

                        $(this).stop().delay(i*90).animate({

                            'opacity' : 1,

                            'padding-top' : 0

                        },{ duration: 400, easing: 'easeOutQuad'}); 

                    });

                }



                //looped first going to last

                if(  $($containerClass+' .swiper-slide-active').index()+1 == 1 ){  



                   $($containerClass+' .swiper-slide:eq(-2)').find('.content').children().each(function(i){

    

                        $(this).stop().delay(i*90).animate({

                            'opacity' : 1,

                            'padding-top' : 0

                        },{ duration: 400, easing: 'easeOutQuad'}); 

                    });

                }



				

			}//if using loop

			

			//play video if there's one

			playVideoBG(currentSlide + 1, $containerClass);

				

			//fadeIn active slide

			$($containerClass+' .swiper-slide:nth-child('+ (currentSlide + 1) +')').find('.content').children().each(function(i){

				

				$(this).stop().delay(i*90).animate({

					'opacity' : 1,

					'padding-top' : 0

				},{ duration: 400, easing: 'easeOutQuad'});	

			});

			

		

			

			

			//light and dark controls

			if($($containerClass+' .swiper-slide:nth-child('+ (currentSlide + 1) +')').attr('data-color-scheme') == 'dark') {

				$($containerClass).find('.slider-pagination').addClass('dark-cs');

				$($containerClass).find('.slider-prev, .slider-next').addClass('dark-cs');

			} else {

				$($containerClass).find('.slider-pagination').removeClass('dark-cs');

				$($containerClass).find('.slider-prev, .slider-next').removeClass('dark-cs');

			}

			

			$captionTrans++;

			if($captionTrans == $('.swiper-wrapper').length) { $('div.first_video_slide').addClass('nulled') }

			

			

	} 

	

	//used in caption transition

	function playVideoBG(nthChild, containerClass){



		if($(containerClass+' .swiper-slide:nth-child('+ (nthChild) +')').find('.video-wrap video').length > 0){ 

			

			if(!$('html').hasClass('no-video')) $(containerClass+' .swiper-slide:nth-child('+ (nthChild) +')').find('.video-wrap video').get(0).play();

			

			if(!$(containerClass+' .swiper-slide:nth-child('+ (nthChild) +')').find('.mejs-overlay.mejs-overlay-play').hasClass('playing') && $(containerClass+' .swiper-slide:nth-child('+ (nthChild) +')').find('.mejs-overlay.mejs-overlay-play').hasClass('mobile-played')) { $(containerClass+' .swiper-slide:nth-child('+ (nthChild) +')').find('.mejs-overlay.mejs-overlay-play').addClass('playing'); }

			if(!$(containerClass+' .swiper-slide:nth-child('+ (nthChild) +')').find('.mejs-poster').hasClass('playing') && $(containerClass+' .swiper-slide:nth-child('+ (nthChild) +')').find('.mejs-poster').hasClass('mobile-played')) $(containerClass+' .swiper-slide:nth-child('+ (nthChild) +')').find('.mejs-poster').addClass('playing');

			

			var $that = $(containerClass+' .swiper-slide:nth-child('+ (nthChild) +')').find('.mejs-overlay.mejs-overlay-play');

			var $that2 = $(containerClass+' .swiper-slide:nth-child('+ (nthChild) +')').find('.mejs-poster');

			

			if($that.hasClass('playing') && $that.hasClass('mobile-played')) {

				setTimeout(function(){ $that.addClass('behind-buttons'); $that2.addClass('behind-buttons');},200);

			} else {

				$that.removeClass('behind-buttons'); $that2.removeClass('behind-buttons');

			}

		}

		

	}

	

	

	var $startingSlide = null;

	 



	

	function slideContentPos(){

		

		$('.swiper-wrapper').each(function(){

			

			//etxra space if first slider in section

			var $extraHeight = ($(this).parents('.nectar-slider-wrap').hasClass('first-section') || $(this).parents('.parallax_slider_outer').hasClass('first-section')) ? 30 : 0;



			var $sliderHeight = parseInt($(this).parents('.swiper-container').attr('data-height'));

			

			var $transparentHeader = ($('#header-outer[data-transparent-header="true"]').length > 0) ? $('#header-space').height() : 0 ;

			if($(this).parents('.first-section').length == 0 || window.innerWidth < 1000) { 

                $transparentHeader = null;

            } else if($transparentHeader != 0 && $('#header-outer[data-remove-border="true"]').length > 0){

                $transparentHeader = $transparentHeader/2

            }

			

			$(this).find('.swiper-slide').each(function(){

				

				var $contentHeight = $(this).find('.content').height();

				var $contentItems = $(this).find('.content > *').length;



                $contentHeight2 = 0;

                $(this).find('.content > *').each(function(){

                    $contentHeight2 += $(this).height() + parseInt($(this).css('margin-bottom')) + parseInt($(this).css('padding-bottom')); 

                });

				

				if($(this).find('.content > *').css('padding-top') == '25px') $contentHeight = $contentHeight - 25*$contentItems;

				

				if($(this).attr('data-y-pos') == 'top'){

					var $topHeight = ($contentHeight2/2) < ((($sliderHeight+ $transparentHeader)/4) - 30) ? ((($sliderHeight+ $transparentHeader)/4) - ($contentHeight2/2)) + 20 :  ($sliderHeight+ $transparentHeader)/8;

					$(this).find('.content').css('top', $topHeight + 'px');

				} 

				else if($(this).attr('data-y-pos') == 'middle') {

					$(this).find('.content').css('top', ((($sliderHeight + $transparentHeader)/2) - ($contentHeight2/2)) + 'px');

				} 

				else {

					if($contentHeight2 > 180) { 

						$(this).find('.content').css('top', ((($sliderHeight + $transparentHeader)/2) - ($contentHeight2/10)) +'px');

					} else {

						$(this).find('.content').css('top', ((($sliderHeight + $transparentHeader)/2) + ($contentHeight2/9))  + 'px');

					}

				}

			});

		});

	}

	

 

	

	function showSliderControls() {

		$('.swiper-container .slider-prev, .swiper-container .slider-next, .slider-pagination').animate({'opacity':1},550,'easeOutSine');

	}

	

	

	var sliderLength = $('.swiper-container').length;

	var sliderLoadedLength = 0;



	function sliderLoadIn(slider) { 

		

		slider.find('.nectar-slider-loading').fadeOut(800,'easeInOutExpo');

		$('body #header-outer[data-transparent-header="true"] .ns-loading-cover').fadeOut(800,'easeInOutExpo',function(){

			$(this).remove();

			$('.nectar-slider-wrap.first-section .swiper-container .swiper-wrapper .swiper-slide').removeClass('not-loaded');

		});

		

		slider.find('span.ie-fix').remove();

		

		///make sure to init smooth scrolling after slider height exists

		var $smoothActive = $('body').attr('data-smooth-scrolling'); 

		if( $smoothActive == 1 && $(window).width() > 690 && $('body').outerHeight(true) > $(window).height() && $('#ascrail2000').length == 0 && !navigator.userAgent.match(/(Android|iPod|iPhone|iPad|IEMobile|Opera Mini)/)){ niceScrollInit(); resizeToCover(); }

		

		//check for sliders in tabbed

		sliderLoadedLength++;

		if($('.tabbed').find('.swiper-container').length > 0 && sliderLoadedLength == sliderLength) {

			setTimeout(function(){ $('.tabbed > ul li:first-child a').click(); }, 200);

		}	

		

	}

	

	

	//play video user is hovering over

	$('body').on('mouseover','.swiper-slide', function(){

		if($(this).find('video').length > 0 && $(this).find('video').get(0).paused == true && $animating == false){

			$(this).find('video').get(0).play();

		}

	});



	

	//mobile play event

	$('body').on('click', '.mejs-overlay.mejs-overlay-play',function(){

		$(this).toggleClass('playing');

		$(this).addClass('mobile-played');

		

		$(this).parent().find('.mejs-poster').toggleClass('playing');

		$(this).parent().find('.mejs-poster').addClass('mobile-played');

		

		var $that = $(this);

		var $that2 = $(this).parent().find('.mejs-poster');

		

		if($(this).hasClass('playing') && $(this).hasClass('mobile-played')) {

			

			setTimeout(function(){ $that.addClass('behind-buttons'); $that2.addClass('behind-buttons'); },200);

		} else {

			setTimeout(function(){ $that.removeClass('behind-buttons'); $that2.removeClass('behind-buttons'); },1);

		}

	}); 

	



	//autoplay

	var autoplay = [];

	var sliderAutoplayCount = -1;

	var $sliderHeight = parseInt($(this).find('.swiper-container').attr('data-height'));

	var portfolioHeaderHeight = ($('.project-title.parallax-effect').length > 0) ? 100 : 0;

	

    function autorotateInit() {

    	$('.nectar-slider-wrap').each(function(i){

    		var $autoplayVal = $(this).attr('data-autorotate');

    		var $that = $(this);

    		var $sliderNum = i;

    		

    		if(typeof $autoplayVal !='undefined' && $autoplayVal.length != '0' && parseInt($autoplayVal)) { 

    			nectarSlideRotateInit($that,$autoplayVal,$sliderNum);

    		}	

    	});

    }

    autorotateInit();

	

	function nectarSlideRotateInit(slider,interval,sliderNum){

		

		autoplay[sliderAutoplayCount] = setInterval(function(){ nectarSlideRotate(slider, sliderNum); } ,interval);

		

		$('#'+slider.attr('id')).attr('autoplay-id',sliderAutoplayCount);

		

		$('#'+slider.attr('id') + ' a.slider-prev, #'+slider.attr('id') + ' a.slider-next, #' + slider.attr('id') + ' .slider-pagination span').click(function(e){ 

			if(typeof e.clientY != 'undefined'){

				clearInterval(autoplay[$('#'+slider.attr('id')).attr('autoplay-id')]); 

			}

		});

		

		sliderAutoplayCount++;

	}

	

	function nectarSlideRotate(slider, sliderNum){



		if($nectarSliders[sliderNum].activeIndex + 1 < $(slider).find('.swiper-wrapper > div.swiper-slide').length){

			$nectarSliders[sliderNum].swipeNext();

		} else {

            //looped sliders

            if($(slider).find('.swiper-container').is("[data-loop]") && $(slider).find('.swiper-container').attr('data-loop') == 'true') {

                $nectarSliders[sliderNum].swipeNext();

            } 

            //regular sliders

            else {

                $nectarSliders[sliderNum].swipeTo(0,800);

            }

		}

	}

	

	function clearAutoplay(e){ 

		var $autoplayVal = $('#'+$(e.container).parent().attr('id')).attr('data-autorotate');



		if(typeof $autoplayVal !='undefined' && $autoplayVal.length != '0' && parseInt($autoplayVal)) {



			clearInterval(autoplay[$('#'+$(e.container).parent().attr('id')).attr('autoplay-id')]); 

		}

	}

	 

	var animationQueue = null;

	

	function sliderArrowCount(e){

		

		//cache slider obj

		var $obj = e;

		

		$animating = true;

		

		 var $slideNum = $($obj.container).find('.swiper-wrapper > div').length;

		 

		$activeIndex = ($($obj.container).attr('data-loop') == 'true') ? $obj.activeIndex : $obj.activeIndex + 1;

		 

		//dark slide header 

        if( $($obj.container).parents('.parallax_slider_outer').length > 0 && $($obj.container).find('.swiper-slide-active[data-color-scheme="dark"]').length > 0 ||

            $($obj.container).parents('.first-section').length > 0 && $($obj.container).find('.swiper-slide-active[data-color-scheme="dark"]').length > 0) {

            $('#header-outer').addClass('dark-slide');

        } else {

            $('#header-outer').removeClass('dark-slide');

        }



		//add slide counts

		$($obj.container).find('.slider-prev .slide-count .slide-current').html( $activeIndex );

		$($obj.container).find('.slider-next .slide-count .slide-current').html( $activeIndex );

		

		if($($obj.container).attr('data-loop') == 'true'){

			//duplicate first slide

			if( $($obj.container).find('.swiper-slide-active').index()+1 == 1) { 

				$($obj.container).find('.slider-next .slide-count .slide-current, .slider-prev .slide-count .slide-current').html( $slideNum - 2 );

			}

			//duplicate last slide

			else if( $($obj.container).find('.swiper-slide-active').index()+1 == $slideNum) {

				$($obj.container).find('.slider-next .slide-count .slide-current, .slider-prev .slide-count .slide-current').html( 1 );

			}

		}

			

		if($obj.activeIndex >= 10) { $($obj.container).find('.slider-next .slide-count .slide-current').addClass('double-digits'); } else {

			$($obj.container).find('.slider-next .slide-count .slide-current').removeClass('double-digits');

		}

		

		

		$($obj.container).find('.swiper-slide:not(".swiper-slide-active")').each(function(){

			if($(this).find('.video-wrap video').length > 0) { 



				//if($(this).find('.video-wrap video').get(0).currentTime != 0 ) $(this).find('.video-wrap video').get(0).currentTime = 0;

			}

		});

		

		

		//don't allow swiping on duplicate transition

		if($($obj.container).attr('data-loop') == 'true'){

			if($obj.previousIndex == 1 && $obj.activeIndex == 0 || $obj.previousIndex == $slideNum - 2 && $obj.activeIndex == $slideNum - 1 ){

				$('.swiper-slide').addClass('duplicate-transition');	

			}

		}

		



		clearTimeout(animationQueue);

		animationQueue = setTimeout(function(){ $animating = false; $('.swiper-slide').removeClass('duplicate-transition'); },800)	

		

	}

	

	

	//functions to add or remove slider for webkit parallax fix

	function hideSlider() {

		if( $(window).scrollTop()/($sliderHeight + portfolioHeaderHeight + 125) >= 1){

			$('.parallax_slider_outer .nectar-slider-wrap, .project-title.parallax-effect').css('visibility','hidden').hide();

			$('.parallax_slider_outer').removeClass('element-in-view');



			$(window).on('scroll',showSlider);

			$(window).off('scroll',hideSlider);

		}

	}

	

	function showSlider() {

		if( $(window).scrollTop()/($sliderHeight + portfolioHeaderHeight + 125) <= 1){



			$('.parallax_slider_outer .nectar-slider-wrap, .project-title.parallax-effect').css('visibility','visible').show();

			$('.parallax_slider_outer').addClass('element-in-view');



			//resize iframes incase user resized window when out of view

			$('.swiper-slide iframe[data-aspectRatio]').each(function() {

			 	var newWidth = $(this).parent().width();

				var $el = $(this);

				if($(this).is(':visible')) $el.width(newWidth).height(newWidth * $el.attr('data-aspectRatio'));



			});

			

			

			nsSliderContentResize();

			

			//show content on current slide - could have been hidden from autorotate when slider was hidden

			if($('.parallax_slider_outer').length > 0) {

				var fromLeft = Math.abs(parseInt($('.parallax_slider_outer .nectar-slider-wrap .swiper-wrapper').css('left')));

				var currentSlide = Math.round(fromLeft/$('.parallax_slider_outer .nectar-slider-wrap .swiper-slide').width()); 



				$('.parallax_slider_outer .swiper-wrapper .swiper-slide:eq(' + currentSlide + ')').find('.content').children().each(function(i){

					$(this).stop(true,true).css({ 'opacity' : 1, 'padding-top' : 0 });	

				});

				

				$('.parallax_slider_outer .swiper-wrapper .swiper-slide:eq(' + currentSlide + ')').addClass('autorotate-shown');

			}

			

			$(window).on('scroll',hideSlider);

			$(window).off('scroll',showSlider);

				

		} 

	} 

	

	function sliderCorrectDisplayCheck() {

		if( $(window).scrollTop()/($sliderHeight + portfolioHeaderHeight + 125) >= 1){

			hideSlider();

		}

		$(window).unbind('scroll',sliderCorrectDisplayCheck);

	}

	



    var $smoothActive = $('body').attr('data-smooth-scrolling'); 

    

	// Create cross browser requestAnimationFrame method:

    window.requestAnimationFrame = window.requestAnimationFrame

     || window.mozRequestAnimationFrame

     || window.webkitRequestAnimationFrame

     || window.msRequestAnimationFrame

     || function(f){setTimeout(f, 1000/60)}



	function parallaxScroll(){



        if($('.parallax_slider_outer.element-in-view').length == 0) return false;



        if($smoothActive == 1 && navigator.userAgent.indexOf('Safari') != -1 && navigator.userAgent.indexOf('Chrome') == -1) { return false; }

        

        $('.parallax_slider_outer.first-section .nectar-slider-wrap[data-parallax="true"]').stop(true,true).transition({ y: $(window).scrollTop()*-.2 },0);

        $('.parallax_slider_outer.first-section .swiper-slide:not(".static"):not(".caption-no-fade") .content, .parallax_slider_outer.first-section .nectar-slider-wrap[data-parallax="true"] .swiper-container .slider-next, .parallax_slider_outer.first-section .nectar-slider-wrap[data-parallax="true"] .swiper-container .slider-prev, .swiper-wrapper .slider-down-arrow').stop(true,true).transition({ y: $(window).scrollTop()*-.14 },0);

        

        $('#full_width_portfolio .project-title.parallax-effect').transition({ y: $(window).scrollTop()*-.2 },0);   

            

        $('.parallax_slider_outer.first-section .swiper-slide:not(".caption-no-fade") .content, .parallax_slider_outer.first-section .nectar-slider-wrap[data-parallax="true"] .swiper-container .slider-next, .parallax_slider_outer.first-section .nectar-slider-wrap[data-parallax="true"] .swiper-container .slider-prev, .swiper-wrapper .slider-down-arrow').css('opacity', 1-($(window).scrollTop()/($sliderHeight-120)) );



    }



    function sliderParallaxUpdateHeight(){

        $sliderHeight = parseInt($('.parallax_slider_outer.first-section .swiper-container').attr('data-height'));

            

        $('.project-title').css({

            'top': $('#header-space').outerHeight() + $adminBarHeight + 'px'

        }); 

    }

	

	

	var $sliderHeight = parseInt($('.parallax_slider_outer.first-section .swiper-container').attr('data-height'));

	var $adminBarHeight = ($('#wpadminbar').length > 0) ? 28 : 0;

	

	function sliderParallaxInit() {

		



		if($('#portfolio-extra').length > 0 && $('#full_width_portfolio').length == 0) { return false; }



		//$(window).on('scroll.nsParallaxScroll',parallaxScroll); 

        $('.parallax_slider_outer').addClass('element-in-view');

        

        window.addEventListener('scroll', function(){ 

          requestAnimationFrame(parallaxScroll) 

        }, false)



		//hide slider to not mess up parallax section

		var portfolioHeaderHeight = ($('.project-title.parallax-effect').length > 0) ? 100 : 0;

		

		function displayParallaxSliderInit() {

	    	if( $(window).scrollTop()/($sliderHeight + portfolioHeaderHeight + 90) >= 1){

                $(window).off('scroll.nsVisibilityHide');

		    	$(window).on('scroll.nsVisibilityHide', hideSlider);

		    	$(window).on('scroll',showSlider);

		    } else {

                $(window).off('scroll.nsVisibilityShow');

		    	$(window).on('scroll.nsVisibilityShow', showSlider);

		    	$(window).off('scroll', hideSlider);

		    }

	    }



		displayParallaxSliderInit();

		

        $(window).off('scroll.nsCorrectDisplayCheck');

		$(window).on('scroll.nsCorrectDisplayCheck',sliderCorrectDisplayCheck);

		

					 

		$('body:not(".single") .page-header-no-bg, body:not(".single") #page-header-wrap, body:not(".single") #page-header-bg').remove();

		

		$('.project-title').addClass('parallax-effect').css({

			'top': $('#header-space').outerHeight() + $adminBarHeight + 'px' 

		}); 

		

		//caption alignment if portfolio fullwidth parallax

		if($('.project-title.parallax-effect').length > 0) {

			$('.parallax_slider_outer.first-section .swiper-slide .content, .nectar-slider-wrap.first-section .swiper-slide .content').css('margin-top','0px');

			$('.swiper-container .slider-prev, .swiper-container .slider-next').css('margin-top','-28px');

		}

		

		//if using wooCommerce sitewide notice

		if($('.demo_store').length > 0) $('.project-title.parallax-effect').css('margin-top','-25px');

		

		if($('#full_width_portfolio').length > 0){

			$('.parallax_slider_outer.first-section').css('margin-top','93px');

		}

		

        $(window).off('resize.nsHeightUpdate');

		$(window).on('resize.nsHeightUpdate',sliderParallaxUpdateHeight);

		

	} 

	

	//parallax

    function parallaxCheck(){



        $(window).off('scroll.nsParallaxScroll'); 



    	if($('.parallax_slider_outer').length > 0 && !navigator.userAgent.match(/(Android|iPod|iPhone|iPad|IEMobile|Opera Mini)/)){

    		sliderParallaxInit();

    		

    	} else if($('.parallax_slider_outer').length > 0 && navigator.userAgent.match(/(Android|iPod|iPhone|iPad|IEMobile|Opera Mini)/)) {

    		

            $('.project-title').addClass('parallax-effect').css({

    			'top': $('#header-space').outerHeight() + $adminBarHeight + 'px' 

    		}); 



            $('body:not(".single") .page-header-no-bg, body:not(".single") #page-header-wrap, body:not(".single") #page-header-bg').remove();

    	}  else {

             $('.project-title').css({'top':'0'});

        }

    }

	parallaxCheck();



	function niceScrollInit(){

		$("html").niceScroll({

			scrollspeed: 60,

			mousescrollstep: 40,

			cursorwidth: 15,

			cursorborder: 0,

			cursorcolor: '#303030',

			cursorborderradius: 6,

			autohidemode: false,

			horizrailenabled: false

		});

		

		if($('#boxed').length == 0){

			$('body, body #header-outer, body #header-secondary-outer, body #search-outer').css('padding-right','16px');

		}

		

		$('html').addClass('no-overflow-y');

	}

	

	//pause video backgrounds if popup video player is started

	$('.portfolio-items a.pp:contains(Video), .swiper-container .buttons a.pp').click(function(){

		$('.swiper-slide').each(function(){

			if($(this).find('.video-wrap video').length > 0) { 

				$(this).find('.video-wrap video').get(0).pause();

			}

		});

	});

	

	

	//solid button hover effect

	$.cssHooks.backgroundColor = {

	    get: function(elem) {

	        if (elem.currentStyle)

	            var bg = elem.currentStyle["backgroundColor"];

	        else if (window.getComputedStyle)

	            var bg = document.defaultView.getComputedStyle(elem,

	                null).getPropertyValue("background-color");

	        if (bg.search("rgb") == -1)

	            return bg;

	        else {

	            bg = bg.match(/^rgb\((\d+),\s*(\d+),\s*(\d+)\)$/);

	            function hex(x) {

	                return ("0" + parseInt(x).toString(16)).slice(-2);

	            }

	            if(bg) {

	            	return "#" + hex(bg[1]) + hex(bg[2]) + hex(bg[3]);

	            }

	        }

	    }

	}

	

	function shadeColor(color, shade) {

	    var colorInt = parseInt(color.substring(1),16);

	

	    var R = (colorInt & 0xFF0000) >> 16;

	    var G = (colorInt & 0x00FF00) >> 8;

	    var B = (colorInt & 0x0000FF) >> 0;

	

	    R = R + Math.floor((shade/255)*R);

	    G = G + Math.floor((shade/255)*G);

	    B = B + Math.floor((shade/255)*B);

	

	    var newColorInt = (R<<16) + (G<<8) + (B);

	    var newColorStr = "#"+newColorInt.toString(16);

	

	    return newColorStr;

	}

	

    function sliderbuttonHoverEffect() {

    	$('.swiper-slide').each(function(){

    		$(this).find('.solid_color').each(function(){

    			var $currentColor = $(this).find('a').css('background-color');

    			var $hoverColor = shadeColor($currentColor, -16);

    			$(this).find('a').hover(function(){

    				$(this).attr('style','background-color:'+$hoverColor+'!important;');

    			},function(){

    				$(this).attr('style','');

    			});

    		});

    	});

	}

    sliderbuttonHoverEffect();

	

	//slider down arrow

	var logoHeight = parseInt($('#header-outer').attr('data-logo-height'));

	var headerPadding = parseInt($('#header-outer').attr('data-padding'));

	var shrinkNum = 8;

	

	if($('#header-outer[data-shrink-num]').length > 0 ) shrinkNum = $('#header-outer').attr('data-shrink-num');

	

	headerPadding = headerPadding - headerPadding/1.8;

	

	$('body').on('click','.slider-down-arrow',function(){

		

		var $currentSlider = $(this).parents('.swiper-container');

		var $topDistance = $currentSlider.attr('data-height');

		var $offset = ($currentSlider.parents('.first-section').length == 0 || $('body[data-transparent-header="false"]').length > 0) ? $currentSlider.offset().top : 0;



		if(!$('body').hasClass('mobile')){

			$('body,html').stop().animate({

				scrollTop: parseInt($topDistance - $('#header-space').height()) + parseInt(shrinkNum) + headerPadding*2 + $offset + 2

			},1000,'easeInOutCubic')

		} else {

			$('body,html').stop().animate({

				scrollTop: parseInt($topDistance) + parseInt($currentSlider.offset().top) + 2

			},1000,'easeInOutCubic')

		}

		return false;

	});

	

	function prettyPhotoInit(){



		var loading_animation = ($('body[data-loading-animation]').attr('data-loading-animation') != 'none') ? $('body').attr('data-loading-animation') : null ;

        var ascend_loader = ($('body').hasClass('ascend')) ? '<span class="default-loading-icon spin"></span>' : '';

        var ascend_loader_class = ($('body').hasClass('ascend')) ? 'default_loader ' : '';



		$(".nectar-slider-wrap a[rel^='prettyPhoto']").prettyPhoto({

			theme: 'dark_rounded',

			allow_resize: true,

			default_width: 690,

			opacity: 0.85, 

			animation_speed: 'normal',

			default_height: 388,

			social_tools: '',

			markup: '<div class="pp_pic_holder"> \

						   <div class="ppt">&nbsp;</div> \

							<div class="pp_details"> \

								<div class="pp_nav"> \

								    <a href="#" class="pp_arrow_previous"> <i class="icon-salient-left-arrow-thin icon-default-style"></i> </a> \

									<a href="#" class="pp_arrow_next"> <i class="icon-salient-right-arrow-thin icon-default-style"></i> </a> \

									<p class="currentTextHolder">0/0</p> \

								</div> \

								<a class="pp_close" href="#"><span class="icon-salient-x icon-default-style"></span></a> \

							</div> \

							<div class="pp_content_container"> \

								<div class="pp_left"> \

								<div class="pp_right"> \

									<div class="pp_content"> \

										<div class="pp_fade"> \

											<div class="pp_hoverContainer"> \

											</div> \

											<div id="pp_full_res"></div> \

										</div> \

									</div> \

								</div> \

								</div> \

							</div> \

						</div> \

						<div class="pp_loaderIcon ' + ascend_loader_class + loading_animation+'"> '+ascend_loader+' </div> \

						<div class="pp_overlay"></div>'

		});

		

	}

	

	



	

});



